Axios HTTP调用始终被视为成功

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)

它正在工作。我会祈祷不要在需要处理多个不同错误的电话中遇到相同的问题。

BT1*_*101 7

这个问题与我的 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);我的拦截器中添加后它工作正常