Код состояния HTTP и тело ответа в HTTP POST для проверки данных - PullRequest
0 голосов
/ 04 января 2019

Предположим, есть HTTP POST, который принимает в качестве входных данных JSON с некоторыми данными, и он должен проверять эти данные. Метод должен также возвращать сообщение проверки в теле ответа.

Ex.

{
   "A" : 1,
   "B" : 1,
   "C" : 3
}

Предположим, что некоторые правила валидации определены в JSON, например (A + B) должно быть меньше, чем параметр C.

У меня есть некоторые сомнения по поводу кода статуса HTTP.

  • Если JSON действителен, HTTP POST возвращает 200
  • Если JSON недопустим (отсутствуют параметры или неправильные типы), HTTP POST должен вернуть 400

Но если JSON действителен (есть все запрошенные параметры и типы верны), но параметры не соответствуют определенным правилам (A + B

  • 200 а чем объяснение в теле ответа?
  • 400 и объяснение в теле ответа?

Есть ли необходимость отличать статус HTTP от статуса правил проверки?

Приветствия

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Ваш ответ должен быть 400 с следующим сообщением: «Неверный запрос: параметры не соответствуют правилам».Ошибка 400

0 голосов
/ 04 января 2019

Для этого был разработан код состояния 422 («Необработанный объект»).

См. https://www.greenbytes.de/tech/webdav/rfc4918.html#STATUS_422.

0 голосов
/ 04 января 2019

Все зависит от варианта использования / функциональности, которых вы хотите достичь.

Если вы хотите, чтобы другие могли легко работать с действительными сообщениями, я бы, возможно, вернул только 2xx , если сообщение полностью допустимо, и во всех остальных случаях возвращает 4xx.В этом случае вызывающей стороне не нужно анализировать результат, что облегчает работу с ним.

Если сценарий использования заключается в предоставлении некоторой аналитической услуги, которую другие будут использовать для анализа сообщений, а не специально для использованиясамо сообщение, тогда я бы вернул 2xx с результатом анализа, если только сообщение не может быть проанализировано (например, не json), и в этом случае 4xx оправдано.

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