问:有时需要第2个接口的参数需要用第1个接口请求后获得的数据(有依赖关系的2个接口),怎么办?
答:
思路就是:axios.then里return axios.get或者return axios.post
axios.get("http://60.190.121.163:9002/jn_app/httpServer?requesttype=101")
.then(function(response){
console.log('response11', response);
return axios.get("http://60.190.121.163:9002/jn_app/httpServer?requesttype=102&ParentDeptid=" + response.data.data[0].parentdeptid);
}).then((res)=> {
console.log('response22', res);
});
问:有时需要1个接口请求完毕以后,再请求第2个接口(只是顺序的问题,接口2不一定需要接口1返回的数据),axios如何写?
答:
this.axios.post('接口地址1', data).then(res => {
console.log('res', res);
});
}).then(() => {
let data = {}; //这里的data是第2个接口的参数
this.$axios.post('接口地址2', data).then(res => {
console.log('res', res);
});
});
以下是对axios的简单封装,
main.js里写(实际项目里把下面的代码放在单独的axios.js文件里,再在main.js里引入axios.js):
// 封装axios
import qs from 'qs';
import axios from 'axios';
const Axios = axios.create({
timeout: 10000,
responseType: 'json',
withCredentials: true, // 是否允许带cookie这些
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
}
});
axios.defaults.baseURL = '请求地址';
// 请求拦截器
axios.interceptors.request.use(
config => {
console.log('config', config);
console.log('config.method', config.method);
if(config.method == 'post'){
config.data = qs.stringify(config.data);
}
return config
},
error => {
console.log('error', error);
}
);
Vue.prototype.axios.get('', {
params : {
参数名 : 参数值
}
}).then(res => {
console.log('get请求成功', res);
});
vue文件里这样发送post请求:
this.$axios.post('', {
requesttype : '101'
}).then(res => {
console.log('post请求成功', res);
});
网友评论