接口和封装axios解决跨域问题

终端安装axios

cnpm install --save axios


如果你有接口,可以在POSTMAN中测试接口是否能用

比如我这里用的是尚硅谷最新接口  http://gmall-h5-api.atguigu.cn

为啥要二次封装?
请求拦截器:可以在发请求之前处理一些业务
响应拦截器:服务器数据返回后,可以处理一些事情

(如果axios基础不好 可以参考一下git/axios文档)

跨域问题:
跨域是什么:协议、域名、端口号不同请求,称之为跨域

比如:
http://localhost:8080  前端项目本地服务器
http://39.98.123.211     后台服务器

传统解决方法:JSONP,CROS,代理

 

在src建立一个api文件夹
在api文件夹中创建两个文件
1.index.js

//这个模块用于对所有API接口进行统一管理
import requests from "./request";
//三级联动接口:/api/product/getBaseCategeryList  是一个GET请求 无参数
//发请求 axios发请求返回结果Promise对象

export const reqCategoryList=()=>{
    return requests({url:"/product/getBaseCategeryList",method:"get"})
}


2.request.js

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

//利用axios对象的方法create创建一个axios实例
//request就是axios,只不过稍微配置一下
const requests=axios.create({
    //配置对象
    //基础路径,发请求时路径当中会出现api
    baseURL:"/api",
    //代表请求超时的事件为5s
    timeout:5000
});

//请求拦截器:可以在发请求之前处理一些业务
requests.interceptors.request.use((config)=>{
    //config是一个配置对象,对象里面有一个属性很重要,headers请求头
    return config
});

//响应拦截器
requests.interceptors.response.use((res)=>{
    //成功的回调函数:服务器响应函数回来以后,响应拦截器可以检测到,可以做一些事情
    return res.data
},(error)=>{
    //响应失败的回调函数
    return Promise.reject(new Error("faile"))
});

//对外暴露
export default requests;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值