【JS】Axios的封装
一般项目中我们会在项目的 src 目录中新建一个 request 文件夹,里边放一个 http.js 和 api.js 文件,http.js 用来封装 axios ,api.js 用来统一管理 api 接口。
一 安装和引入
1 | // 首先通过安装命令 npm install axios 安装axios |
二 配置 baseURL
由于项目会有不同的环境比如:开发环境、测试环境、生产环境。所以我们需要通过 node 的环境变量来匹配我们默认的 baseURL。可以通过设置 axios.defaults.baseURL 来设置 axios 的默认请求地址。
1 | if (process.env.NODE_ENV === 'development') { |
三 设置请求超时
通过设置 axios.defaults.timeout 来设置默认的请求超时时间,假如超过了这个时间就会提醒用户当前请求超时等信息。
四 设置 post 请求头
post 请求的时候,需要设置一个请求头,可以用 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; 来设置。
五 设置请求拦截器
我们在发送请求之前要对请求进行一个拦截,比如有的接口是需要用户登陆之后才能访问的,或者 post 请求的时候,我们需要序列化我们提交的数据,这时候,我们可以在请求发送之前设置一个拦截器,从而进行我们需要的操作。
1 | // 先导入 vue-x,因为要用到里面的状态对象 |
六 设置相应拦截器
与请求拦截器同理,我们可以对服务器返回来的数据提前做一些处理,如果后台返回的状态码是 200 ,则正常返回数据,如果返回的是其他错误码,那我们可以做一个统一的错误处理。
1 | axios.interceptors.response.use( |
七 封装 get 和 post 方法
get 方法:定义一个 get 函数,该函数有两个参数,第一个表示我们要请求的 url 地址,第二个表示要携带的参数。get 函数返回一个 promise 对象,当 axios 请求成功时 resolve 服务器返回的内容,请求失败时 reject 错误值。最后通过 export 抛出 get 函数
1 | export function get(url, params) { |
post 方法:原理跟 get 方法一样,但是 post 方法必须要对提交的参数对象进行序列化操作,所以这里使用 qs 模块来序列化我们的参数。
1 | export default post(url, params) { |
原文链接:axios请求封装