+
95
-

回答

改成这样,增加一个 Vue.http.interceptors.push

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue-resource.min.js"></script>

</head>
<body>
<div id="app">


</div>
<script type="text/javascript">
Vue.http.interceptors.push((request, next) => {
//request.credentials = true; // 接口每次请求会跨域携带COOKIE
//request.method= 'POST'; // 请求方式(get,post)
//request.headers.set('token','111') // 请求headers携带参数
// console.log(this)//此处this为请求所在页面的Vue实例
// modify request
request.method = 'GET'; //在请求之前可以进行一些预处理和配置



next((response) => {
if (!response.ok) {
response.ok=true;//如果http接口不是返回的http状态200,我们手动矫正一下,否则就无法执行$http里的第一个回调了
}

//在响应之后传给then之前对response进行修改和逻辑判断。对于token时候已过期的判断,就添加在此处,页面中任何一次http请求都会先调用此处方法,也可以修改response的内容
response.status = 200;
response.body = "hi";
return response;

});

});
var vm = new Vue({
el: '#app',
data: {},
mounted: function() {
this.$http.post('api',
{
params: {
a: 1,
b: 2
}}).then(function(res) {
document.write(res.body);
},
function(res) {
console.log(res.status);
});
},
methods: {}
})

</script>

</body>
</html>


网友回复

我知道答案,我要回答