Вопрос новичка: как правильно передать сообщение об ошибке от вызовов ajax? - PullRequest
1 голос
/ 01 июня 2019

Теория гласит: - если ошибки нет, верните 200 - если есть ошибка, верните 404, но как передавать сообщения об ошибках с кодом 404?

Я создал бэкэнд, который в настоящее время возвращаеткод 200 И в ответе json есть флаг «успех».Если флаг имеет значение false, другое поле содержит сообщение об ошибке.(Может быть несколько причин, по которым операция не удалась, и я хочу показать причину пользователю.)

Я знаю, что по соглашению должна быть возвращена ошибка 404, но как я могу передать сообщение об ошибке в этомдело ???

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Как насчет обработки результатов API с помощью этих двух основных частей:

  1. Ответы на ошибки HTTP:

    Не использовать для ошибок бизнес-процессов:

    • 401 и 403 Аутентификация и безопасность - описание причины ошибки в заголовке
    • 404 Не найдено - только когда запрос на загрузку файла
    • и другие коды ошибок HTTP ...
  2. Бизнес-ошибки и неудачные запросы:

    Отвечая на код состояния HTTP 200 (ОК) и используйте нужный формат ответа, например:

    • status (bool): True, если запрос выполнен успешно.
    • данные: результат API.
    • сообщение (объект)
      • код (int [enum]): определяется перечислением, описывающим тип сообщения (например, состояние модели, неверный запрос, недоступные службы, бизнес-политика, политика ограничения доступа и т. Д.) *
      • messages (строка []): сообщения (например, недопустимые поля или сообщения [s] процесса и т. Д.) *
1 голос
/ 01 июня 2019

Если их нет, верните 200, если есть ошибка, верните corresponding error code and message, а не просто 404. 404 принимается, когда ожидаемые данные или ресурс не найдены.

Взгляните на Коды ошибок HTTP

Вы должны установить значение поля error message в зависимости от выданной ошибки. Вы можете либо catch указать любую ошибку и установить ее на error message, либо указать собственные причины ошибок различного типа.

Ваш ответ должен выглядеть как

{
    'success': false,
    'errorCode' : 'code', //code returned by error
    'errorMessage' : 'Custom Message' //error message     
}

Примечание: Отправьте код, отредактировав вопрос, чтобы другие могли помочь вам немного лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...