Лучшая практика обработки ошибок ответа Laravel с помощью Axios - PullRequest
0 голосов
/ 30 января 2019

Я застрял, решая, какой метод лучше всего подходит для обработки ошибок.Это включает в себя отправку запросов со стороны клиента 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

Второй метод обработки ошибок:

Этот метод позволяет избежать появления подобных сообщений в консоли, всегда возвращая HTTP-код ответа 200, с сообщением об ошибке в случае сбоя.

На стороне сервера будет выглядеть так,единственное, что изменяется, - это значение «success» в ответе сервера 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
    }
});

Использование второго метода позволяет избежать любой информации об ошибках, передаваемой в консоль пользователя.

...