使用Axios处理Laravel响应错误的最佳实践

时间:2019-01-30 09:41:07

标签: javascript laravel error-handling axios httpresponse

我一直在决定哪种方法是错误处理的最佳实践。这涉及将请求从Axios客户端发送到Laravel服务器端。对于可能如何处理错误,我有两种不同的方法。哪个是最佳做法,为什么?

在此示例中,我们将使用从服务器中以 JSON 格式获取配置文件信息。

第一种错误处理方法:

服务器端看起来像这样,它根据成功与否返回两个不同的JSON响应。首先是成功的响应,然后是错误的响应。

//success response
return response()->json([
    'success' => true,
    'data' => []
], 200);

//error response
return response()->json([
    'success' => false,
    'error' => []
], 400);

客户端看起来像这样,它通过Axios发送请求以获取配置文件信息,并根据HTTP响应进行相应处理。

axios.get('/json/profile')
.then((response) => {
    // handle success response (HTTP CODE 200)
})
.catch((error) => {
    // handle error response (HTTP CODE 400)
});

此方法的问题在于,您将在控制台中收到以下消息:enter image description here

第二种错误处理方法:

此方法通过始终返回200的HTTP响应代码(如果失败)和错误消息来避免在控制台中出现类似的消息。

服务器端看起来像这样,唯一改变的是JSON服务器响应中的“成功”值。

//success response
return response()->json([
    'success' => true,
    'data' => []
], 200);

//error response
return response()->json([
    'success' => false,
    'error' => []
], 200);

客户端看起来像这样,它将检查响应的成功部分是真还是假,以确定是否是错误。

axios.get('/json/profile')
.then((response) => {
    if (response.success) {
        //handle success
    } else {
        //handle error
    }
});

使用第二种方法可以避免将任何错误信息传递到用户控制台。

0 个答案:

没有答案