封装axios,以及封装网易云音乐api文档中的全部请求
封装号的js文件地址Github:云博前端项目-网易云音乐api封装后的js文件地址前端
向将axios请求封装vue
npm install axios -s
封装的请求函数文件,经过传入type=GET/POST/PUT/DELETE分别发送
axios.get(url)和
axios.post(url,data)ios
/* ajax请求函数模块 返回值: promise对象(异步返回的数据是: response.data) 其它请求使用axios.post请求数据,好比type='PUT' */ import axios from 'axios' export default function ajax (url, data={}, type='GET') { return new Promise(function (resolve, reject) { // 执行异步ajax请求 let promise; if (type === 'GET') { // 准备url query参数数据 let dataStr = ''; //数据拼接字符串 Object.keys(data).forEach(key => { dataStr += key + '=' + data[key] + '&' }); if (dataStr !== '') { dataStr = dataStr.substring(0, dataStr.lastIndexOf('&')); url = url + '?' + dataStr } // 发送get请求 promise = axios.get(url) } else { // 发送post请求 promise = axios.post(url, data) } promise.then(function (response) { // 成功了调用resolve() resolve(response.data) }).catch(function (error) { //失败了调用reject() reject(error) }) }) }
调用的例子
例如邮箱登陆的封装函数git
const apiUrl='http://www.huashengshu.top:3000';//网易云音乐服务器地址,服务器搭建访问前面文档地址:https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=安装 import ajax from '../../ajax'; //导入封装的axios /** * 邮箱登陆 * @param email 邮箱号 * @param password 密码 * @returns {Promise<unknown>} */ export const reqLoginEmail = (email,password)=>ajax(`${apiUrl}/login/`,{email,password});
import {reqLoginEmail} from "@/api/music/163/163musicApi";//导入函数 //调用邮箱登陆函数 async test() { const result = await reqLoginEmail('邮箱','密码'); console.log(result);//得到到的数据result }