API обработки обработки исключений как внутренняя ошибка сервера (500) - PullRequest
0 голосов
/ 23 октября 2019

У меня есть внутренний API (A), который подключается к стороннему API (B).

API B может выдавать ошибки ниже

  1. ERR001
  2. ERR002

API A имеет сообщение об ошибке, настроенное для того же кода ошибки, что и ниже,

  1. ERR001 - Произошла ошибка 1
  2. ERR002 - Произошла ошибка 2

Теперь API A возвращает ниже, в случае возникновения ошибки / исключения

Response headers : HTTP/1.1 500 Internal Server Error
Response Body: {"time":"2000-04-..","errors":[{"code":"ERR001","message":"Error1 occurred"}],"details":"uri=/*","status":500}

Является ли настройка состояния ошибки HTTP / 1.1 500 Internal Server Error более подходящей для этой ситуации?

Является ли обертка известного кода ошибки как статуса 500 хорошей идеей?

Если нет, какой код состояния мне нужно установить, и могу ли я сохранить ту же структуру ошибок?

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Вы получите 500, даже если вы ничего не сделаете, если что-то не получится на сервере и не будет обработано, то сервер автоматически выдаст 500. Было бы лучше вернуть другие коды состояния, чтобы отличить исключение, которое выобработан, причина в том, что если вы увидите 500, вы будете знать, что это то, что вы не обработали.

0 голосов
/ 23 октября 2019

Является ли настройка состояния ошибки HTTP / 1.1 500 Internal Server Error более подходящей для этой ситуации?

Я бы сказал, ДА .

Потому что во многих случаях (или что я думаю) вы не должны раскрывать, какая ошибка произошла при обмене данными со сторонними библиотеками.

Оборачивает ли известный код ошибки как статус 500хорошая идея?

Это зависит.

Если ошибка возникает в вашем приложении из-за какой-то бизнес-логики. В этом случае вы должны бросить какой-нибудь четкий код ошибки и сообщение об ошибке.

Но если ошибка возникает из-за какой-то третьей стороныбиблиотека не работает, в этом случае вы не должны выдавать точное сообщение об ошибке. Потому что это может быть секретная информация.

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