要在Axios中添加签名,你可以使用拦截器(interceptors)在请求发送之前对请求进行加密和签名。以下是一个使用`js-md5`库进行MD5签名的示例:
1. 首先,安装`js-md5`库:
```bash
npm install js-md5
```
2. 创建一个全局的Axios实例,并添加请求拦截器来处理签名:
```javascript
import axios from 'axios';
import md5 from 'js-md5';
// 创建axios实例
const req = axios.create({
baseURL: '/api/v1',
timeout: 5000,
});
// 请求拦截器
req.interceptors.request.use(
config => {
// 合并参数
const params = Object.assign(config.params, {
timestamp: parseInt(Date.now() / 1000),
});
// 处理待签名的数据
const item = [];
for (const k in params) {
if (Object.hasOwnProperty.call(params, k) && k !== 'sign') {
item.push(k + params[k]);
}
}
const str = JSON.stringify(item);
// 添加MD5签名
const sign = md5(str + config.data.secret_key); // 假设后端使用secret_key作为签名密钥
config.params.sign = sign;
return config;
},
error => {
// 处理请求错误
return Promise.reject(error);
}
);
// 使用封装的axios实例发送请求
req.get('/your_endpoint', { params: { key1: 'value1', key2: 'value2' } })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
```
在这个示例中,我们首先创建了一个Axios实例,并为其添加了一个请求拦截器。在拦截器中,我们合并了请求参数,并创建了一个待签名的字符串。然后,我们使用`js-md5`库对这个字符串进行MD5加密,并将生成的签名添加到请求参数中。
请注意,这个示例假设后端使用MD5加密和`secret_key`作为签名密钥。你需要根据实际后端的要求来调整签名算法和密钥。