淘先锋技术网

首页 1 2 3 4 5 6 7

一、安装axios

npm install --save axios

二、新建api文件

        在src文件夹中新建api文件

        在api文件中新建requests.js文件

三、在requests.js文件中对requests进行二次封装

//对于axios进行二次封装
import axios from "axios";

//axios.create方法执行,其实返回一个axios和request一样的
let requests = axios.create({
    //基础路径,发请求URL携带api【发现:真实服务器接口都携带/api】
    baseURL: "/api",
    //超时的设置
    timeout: 5000
});

//请求拦截器:将来项目中【N个请求】,只要发请求,会触发请求拦截器!!!
requests.interceptors.request.use(config => {
    //请求拦截器:请求头【header】,请求头能否给服务器携带参数
    //请求拦截器:其实项目中还有一个重要的作用,给服务器携带请求们的公共的参数
    //不管那个模块发请求,请求拦截器,都可以触发。请求拦截器可以通过请求头每一次协大公共参数给服务器【用户未登录的临时身份】
    return config;
});


//响应拦截器:请求数据返回会执行
requests.interceptors.response.use((res) => {
    //res:实质就是项目中发请求、服务器返回的数据
    return res.data;
}, (err) => {
    //温馨提示:某一天发请求,请求失败,请求失败的信息打印出来
    console.logconsole.log(err.message);
    //终止Promise链
    return new Promise();
});

//最后需要暴露:暴露的是添加新的功能的axios,即为requests
export default requests;

三、进行请求封装

        在api文件下新建index.js文件

//插入axios的二次封装函数
import requests from "./requests";
//get
export const reqCategory = () => {
   return requests({ method: 'get', url: '/product/getBaseCategoryList' });
}
//post
export const reqSearchList = (data)=>requests({url:'/list',method:'post',data})
//delete
export const reqDeleteCart = (skuId)=>requests({url:`/cart/deleteCart/${skuId}`,method:'delete'});

 四、在vue文件中调用

import { reqCategory } from '@/api';

reqCategory()

五、如果调用出现404,则是跨域问题,在vue.config.js文件里输入红色代码段,如没有vue.config.js文件,在根目录下新建,将一下代码复制进去即可。

module.exports = {

  productionSourceMap:false,

  // 关闭ESLINT校验工具

  lintOnSave: false,

  //配置代理跨域

  devServer: {

    proxy: {

      "/api": {

        target: "获取数据的服务器地址",

      },

    },

  },

};