request 拦截
接口调用地址总有那么一段是一样的,如 http://www.example.com/api/getlist
或是 http://www.example.com/api/getarticle
这其中有一段是相同的。
axios 中在 request 拦截器中或 create 中添加该相同的基础 URL「http://www.example.com/api/
」 ,后期调用时就可以简写这 URL ,直接 axios.get("getlist").then(...)
。
- axios.interceptors.request.use(
- config => {
- // do something ...
- config.baseURL = “http://www.example.com/api/”;
- config.headers['content-type'] = 'application/json';
- return config;
- },
- err => {
- return Promise.reject(err);
- }
- );
在 request 第一个参数中写上配置,里面可以添加基础 url 及一些请求头。
response 拦截
返回数据时,可以封装一下返回数据,使其增加易用性,如添加自定义 resolve 和 reject 的数据处理。
- axios.interceptors.response.use(
- res => {
- return res;
- },
- err => {
- return Promise.reject(err);
- }
- );
自定义 axios 示例添加拦截
有时候不喜欢 axios 这个词,可以通过自定义示例。
- const api = axios.create();
这样,后期可以通过 api.get("http://www.example.com")
来调用,当然也可给其添加基础URL或请求头。
- const api = axios.create({
- baseURL: "http://www.example.com/api/",
- headers: {
- 'content-type':'application/json'
- }
- });
自定义示例后,添加拦截器亦如此。
- api.interceptors.request.use(
- config => {
- // do something ...
- return config;
- },
- err => {
- return Promise.reject(err);
- }
- );