gpt4 book ai didi

javascript - Axios HTTP 调用总是被视为成功

转载 作者:搜寻专家 更新时间:2023-11-01 04:12:52 25 4
gpt4 key购买 nike

所以我正在尝试多种方法从我的 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)
});
}

所以我正在调用我的 getObserved 端点,虽然它返回 http_response_code(503); 它会转到 .then() 部分,因为它控制台日志“成功”字符串.

这是控制台的输出:

GET http://localhost/obiezaca/v2/api/article/getObserved.php 503 (Service Unavailable)

success 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)
});
}

但它仍然没有控制“错误”,尽管我从我的端点返回了这个 503 错误请求。为什么?


我还想补充一点,我不认为my endpoint无法正常工作,因为我正在通过 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 = [];
}
});

它正在运行。我会祈祷不要在我需要处理几个不同错误的调用中遇到同样的问题。

最佳答案

这个问题与我的 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
});
}

它没有返回错误响应的 promise ,所以在 promise http 调用之后,它以某种方式将其视为成功。在我的拦截器中添加 return Promise.reject(err); 后它工作正常

关于javascript - Axios HTTP 调用总是被视为成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com