Axios 使用小结
工作的项目是前后端分离的,前端项目采用 Vue 相关的技术栈进行搭建,与此同时,前端请求的方式也发生了改变,由原来 Jquery 中 ajax 变为 axios ;
在使用的过程中当然存在一些疑问,在这里作下小小的汇总;
axios 是什么
GitHub 地址:https://github.com/axios/axios,aixos 是一个基于Promise的Http库,主要使用在浏览器和以node.js作为后端的应用中。安装和使用官网里已经有了,可以看下中文网的文档。
简单对比
两种库的请求:
1  | // Jquery ajax post 侵吞跪求  | 
执行多个并发请求
1  | // 获取用户公开信息  | 
项目中的封装
axios提供api来传递配置创建请求,所以可以进行一个简易的封装,方便前端统一管理接口。避免在main.js或者各个vue文件中重复引入axios;或者写相同的接口,如:axios.get('/user?ID=12345')。
简单封装 request.js
使用自定义配置创建一个axios实例,其他api.js使用这个实例进行创建
1  | import axios from 'axios'  | 
请求拦截,在 axios 中,post 请求中的数据会传递 json 形式的数据回到后端,即Content-Type为appliaction/json;后端的接口需要加上注解@RequestBody来接收json参数,为了兼容一下老的接口需要作一定的处理
1  | // request interceptor  | 
返回信息拦截
1  | // response interceptor  | 
使用 request.js
1  | import request from "@/http/request";  | 
为了方便维护前端 api 函数,在 vue 项目生成的 src 中创建api文件夹。
1  | +---api  | 
封装 BaseApi
随着写模块越来越多,自热而然会产生一些重复的代码,比如:
a-api.js
1  | import request from '@/http/request'  | 
b-api.js
1  | import request from '@/http/request'  | 
接口形式差不多,感觉可以抽离一个公共的 js 进行调整,当然这个封装的前提是前后端都约定后一些通用的接口形式
1  | export default class BaseApi {  | 
使用 BaseApi
user-sign.js 用户注册相关 api
1  | import BaseApi from "@/api/base";  | 
其他:
其他一些比较重要的,就列在这里,来源官网
请求方法的别名
为方便起见,为所有支持的请求方法提供了别名
1  | axios.request(config)  | 
注意
在使用别名方法时, url、method、data 这些属性都不必在配置中指定。
并发
处理并发请求的助手函数
1  | axios.all(iterable);  | 
创建请求的配置
1  | {  | 
响应结构
1  | {  |