Appearance
axios
控制请求头不携带 Token
- 约定:在
/api/
下的工厂函数中,给某方法的参数中中加入noToken: true
标记,即可不携带 Token。例如:
js
import request from '@/utils/request';
function list(params) {
return request({
url: '/foo/bar',
method: 'get',
params,
noToken: true,
});
}
WARNING
注意,有些框架提供的方案是在headers
中加入标记,这污染了headers
,不是最佳实践,不要用。
- 请求拦截器中写入:
js
service.interceptors.request.use(
(config) => {
if (getToken() && !config.noToken) {
config.headers['Authorization'] = 'Bearer ' + getToken();
}
return config;
},
(error) => {
Promise.reject(error);
}
);
过滤前端的私有字段
业务代码发送 POST、PUT 请求时往往直接发送form
大对象,而form
中有时会包含一些前端临时使用的私有字段,这些字段不需发送到后端,此时应在拦截器中统一过滤。
TIP
约定:私有字段以下划线_
开头,作为前端私有标记。
js
service.interceptors.request.use(
(config) => {
if (config.data) {
for (let key in config.data) {
if (/^_/.test(key)) {
delete config.data[key];
}
}
}
return config;
},
(error) => {
Promise.reject(error);
}
);