axios二次封装及使用携带token设置Header请求参数参数名Content-Type参数值application/x-www-form-urlencoded
时间: 2023-07-29 09:13:23 浏览: 86
axios封装,携带token
5星 · 资源好评率100%
下面是 axios 的二次封装代码,其中包括了设置 token 和 Content-Type 的代码:
```javascript
import axios from 'axios';
// 创建 axios 实例
const instance = axios.create({
baseURL: 'http://localhost:8080', // 设置请求的基础 URL
timeout: 10000, // 设置请求超时时间
headers: { // 设置请求头
'Content-Type': 'application/x-www-form-urlencoded'
}
});
// 添加请求拦截器
instance.interceptors.request.use(config => {
// 在发送请求之前做些什么
const token = localStorage.getItem('token');
if (token) {
// 设置 token
config.headers.Authorization = `Bearer ${token}`;
}
return config;
}, error => {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
instance.interceptors.response.use(response => {
// 对响应数据做些什么
return response.data;
}, error => {
// 对响应错误做些什么
return Promise.reject(error);
});
export default instance;
```
在上面的代码中,我们通过 `create` 方法创建了一个 axios 实例,并且设置了基础的 URL、请求超时时间和请求头。然后,我们通过 `interceptors` 添加了请求拦截器和响应拦截器。
在请求拦截器中,我们获取到了保存在 localStorage 中的 token,并且通过设置 `config.headers.Authorization` 来携带 token。在响应拦截器中,我们只返回了响应数据的 `data` 字段。
如果你想要发送一个携带 token 并且 Content-Type 为 `application/x-www-form-urlencoded` 的 POST 请求,可以这样写:
```javascript
import axios from '@/utils/request';
axios.post('/api/login', {
username: 'admin',
password: '123456'
}, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(response => {
console.log(response);
}).catch(error => {
console.log(error);
});
```
在上面的代码中,我们通过第三个参数来设置请求头,这样就能够携带 token 并且设置 Content-Type 为 `application/x-www-form-urlencoded` 了。
阅读全文