经过这段时间vue项目的积累, 总结一下自己对axios请求的封装, 我们可以通过以下点来拆分:
1.请求的url
2.请求的方式
3.请求的参数
4.请求拦截器
5.响应拦截器
6.调用方式
请求的url
假设url为http://10.0..:8080/test/task/32682?appCode=001&userId=test, 我们可以把url拆分为
- 基础路径baseURL=http://10.0..:8080
我们可以把baseURL的值存到全局配置config文件中, 然后通过webpack
ProvidePlugin添加到全局变量 config.baseURL
获取baseURL
WeChat44c47fe85238878d09bcbd8412a4d197.png
-
业务路径path=/test/task/{taskId}
WechatIMG433.jpeg
对于业务路径我们可以定义一个path.js文件, 统一管理这些路径,如下图:
另外 path中{taskId}, 这里给大家解释下, 后台按照restful api设计的时
候, 会把针对某个实体的操作, 此实体的id拼接在path上, 所以我们需要动态的把
{taskId}替换为32682, 代码见下个步骤 -
url请求参数appCode=001&userId=test
屏幕快照 2019-10-24 上午10.36.59.png
最后我们需要把请求的参数拼接到url上, 这里强调下把参数拼接到url上, 并不仅
仅是get请求方式, 而是get请求方式只能放到url上, 一般来说其他请求方式在url
请求上拼接参数, 这类参数基本上是一些业务系统每个接口都需要的一些信息,
我们通过util中封装的方法统一处理url如下:
-
请求方式
axios为我们提供了get/delete/head/post/put/patch等
屏幕快照 2019-10-24 上午11.09.37.png
-
请求拦截器
屏幕快照 2019-10-24 上午10.49.34.png
我们在发出请求时, 可以对请求进行一些处理, 比如说我们移动端的token添加
request header, 以及在发出请求时的出错
-
响应拦截器
我们在收到响应时, 可以统一对响应成功和失败,进行一些处理, 不同系统后台处
理可能会不一样, 比如id不能为空, 在不同系统可能有如下2种:- 返回200状态码, 在responseData中, 再通过某个字段来区分成功或失败, 失败
的话, 再专门进行失败处理 -
返回400状态码, 400状态码一般代表, 客户端传递参数有问题, 导致后台出错,
这时, 后台一般会自定义一些异常类去捕获, 异常类一般有2个属性, code和
message, 后台定义的code在接下来我们前端处理codeMessage对象中, 要保持
一致, 而codeMessage中的message不一定需要与后台异常类中message保持一
致, 因为后台的message一般是英文提示, 此提示直接展示给用户不够友好, 所以
我们前端可以翻译或者自定义message
屏幕快照 2019-10-24 上午11.00.25.png
- 返回200状态码, 在responseData中, 再通过某个字段来区分成功或失败, 失败
-
axios请求构造
屏幕快照 2019-10-24 上午11.12.32.png -
业务模块具体调用请求
我们可以进行一下抽象, control -> service -> http请求
- control我们可以理解为业务组件调用层, 构造请求参数
- service我们可以理解为业务模块服务层, 我们在这里可以对请求参数处理, 以及url处理, 此处我们可以按照业务场景分模块
比如: moduleA下的请求集中一起, moduleB下的请求集中一起 -
http请求即为我们导出的axios对象, 此对象提供了我们进行http请求的基础实现
屏幕快照 2019-10-24 上午11.24.31.png
屏幕快照 2019-10-24 上午11.28.06.png
至此, 完成对axios请求的封装, 欢迎提问, 一起进步!
网友评论