dop*_*ode 5 javascript http axios
因此,我正在尝试多种方式来从axios HTTP调用获取错误响应状态,并且正在发生奇怪的事情。
getData() {
axios.get(`/api/article/getObserved.php`, axiosConfig)
.then(response => {
console.log('success');
console.log(response);
})
.catch(err => {
console.log('error');
console.log(err.status);
console.log(err.response.status)
});
}
Run Code Online (Sandbox Code Playgroud)
因此,我正在调用我的getObserved端点,尽管它返回了http_response_code(503);它,但是.then()由于控制台日志“成功”字符串,它会分开。
这是从控制台输出的:
GET http://localhost/obiezaca/v2/api/article/getObserved.php 503(服务不可用)
成功favouriteArticles.vue?31bd:83
我已经完成了数百个这样的调用,.catch即使我没有像其他语言那样抛出异常,这也总是会出错。但是我也尝试这样:
getData() {
axios.get(`/api/article/getObserved.php`, axiosConfig)
.then(response => {
console.log('success');
console.log(response);
}, function (err) {
console.log('error');
console.log(err.status);
console.log(err.response.status);
})
.catch(err => {
console.log('error');
console.log(err.status);
console.log(err.response.status)
});
}
Run Code Online (Sandbox Code Playgroud)
尽管我的端点返回了503错误请求,但它仍然没有控制台“错误”。为什么?
我还想补充一点,我认为端点无法正常工作,因为我正在使用cURL和POSTMAN进行测试并手动进行测试,因此一切都很好。
编辑因为反应是不明确的时候,不从我的端点数据,我需要处理只有一个错误(有数据与否)我刚才做这样的事情:
getData() {
axios.get(`/api/article/getObserved.php`, axiosConfig)
.then(response => {
if(response) {
this.articles = response.data.records;
} else {
this.noFavourite = true;
this.articles = [];
}
});
Run Code Online (Sandbox Code Playgroud)
它正在工作。我会祈祷不要在需要处理多个不同错误的电话中遇到相同的问题。
这个问题与我的 httpInterceptor 有关
import axios from 'axios';
import { store } from '../store/store';
export default function execute() {
axios.interceptors.request.use(function(config) {
const token = store.state.token;
if(token) {
config.headers.Authorization = `Bearer ${token}`;
//console.log(config);
return config;
} else {
return config;
}
}, function(err) {
return Promise.reject(err);
});
axios.interceptors.response.use((response) => {
return response;
}, (err) => {
console.log(err.response.status)
return Promise.reject(err); // i didn't have this line before
});
}
Run Code Online (Sandbox Code Playgroud)
它没有在错误响应上返回承诺,所以在承诺 http 调用之后,它以某种方式将其视为成功。在return Promise.reject(err);我的拦截器中添加后它工作正常
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |