在开发工具中显示的axios和错误代码500

时间:2018-04-14 09:17:31

标签: reactjs

我在我的反应应用程序中使用axios将POST发送到另一台服务器。 如果服务器响应错误500代码,它将显示在chrome dev-tools:

POST http://192.168.1.2:3001/login 500 (Internal Server Error)

我正在内部处理500代码,这可能会在我的应用中发生,并且不会被视为错误。

是否可以配置axios不在开发工具上记录错误?我不希望最终用户看到它。

4 个答案:

答案 0 :(得分:1)

这就是.catch()处理程序的用途。当axios.post()返回的承诺被拒绝时,它会被调用:

axios.post(
    /* ... */
).then(
    response => {/* do something with the response */}
).catch(
    error => {/* do something with the error */}
);

但你应该在服务器端真正处理这种情况。服务器不应该故意返回500响应。此响应表示未处理的错误。如果您的服务器处理该错误,它应该返回更合适的错误代码。 500条消息应被视为错误,应该修复,而不是试图将其隐藏起来。

答案 1 :(得分:1)

只是改善了上述...... 为了确保错误来自您的API调用,您可以在axios catch上指定该错误。

axios.post(
    /* ... */
).then(
    response => {/* do something with the response */}
).catch(
    error => if(error.response){
    console.log(error.response.data)
    // from here you get only the response that is generated from your API 
    and hence you can differrentiate if the error is local or external
}
);

答案 2 :(得分:0)

以下是处理此案例的示例:

axios.post('/formulas/create', {
    name: "",
    parts: ""
})
.then(response => { 
})
.catch(error => {
});

答案 3 :(得分:0)

对我有用的是以下代码:

axios.post(`${BASE_URL}/`, data, config)
   .then(response => {
        if (response.data.success) {
            console.log(response.data.message);
            resolve(response.data.message)
        } else {

            reject(response.data.message)
        }
    }).catch(err => {

        let e = { ...err
    }

    console.log(e.response.data);
    reject(e.response.data)

   })

})