Каким должен быть код ответа при возникновении ошибок валидации? - PullRequest
2 голосов
/ 30 октября 2010

Я реализую API. API принимает / возвращает тип контента JSON. Теперь предположим, что данные, представленные каким-либо запросом POST, недействительны, как отсутствующий атрибут, или существует дублирование для тех же данных. Каков стандартный код ответа HTML в этом случае?

Ответы [ 5 ]

2 голосов
/ 30 октября 2010

Ошибка лежит на стороне клиента, поэтому вы хотите использовать код состояния 4xx . Я бы пошел с 400 - Плохой запрос :

Запрос не может быть понят сервер из-за неправильного синтаксиса. Клиент не должен повторять запрос без изменений.

1 голос
/ 30 октября 2010

Есть два ответа:

Если вы отправили форму, просто верните 200 - OK с HTML-кодом, объясняющим, почему объект не был создан.

Если у вас есть API, вы должны использовать следующее

200 ОК

  • Когда запрос был в порядке и вернул правильные данные.

201 СОЗДАН

  • Вызов был успешным, и новый объект создан.

400 ЗАПРОС ПЛОХОЙ

  • неверный URI запроса
  • Неверный заголовок HTTP
  • Получение неподдерживаемого нестандартного параметра
  • Получение недействительного тела сообщения HTTP

401 РАЗРЕШЕНО

  • Проблемы с авторизацией. Например. неправильный ключ API и т. д.

403 ЗАПРЕЩЕНО

  • Правильно разрешено, но не разрешено.

404 НЕ НАЙДЕНО

  • Ресурс не существует (например, при чтении или обновлении)

405 МЕТОД НЕ РАЗРЕШЕН

  • Используйте в ситуациях, когда данный метод REST недопустим. Например. POST для одного ресурса или DELETE для всей коллекции ресурсов.

409 КОНФЛИКТ

  • В случае сбоя обновления отправьте «Конфликт», чтобы позволить клиентской стороне самостоятельно разрешить конфликт и повторить попытку.

500 ОШИБКА ВНУТРЕННЕГО СЕРВЕРА

  • Внутренняя ошибка. Это код по умолчанию, который используется для всех нераспознанных ошибок.

501 НЕ РЕАЛИЗОВАНО

  • Используйте для ожидаемых, но еще не реализованных функций.
0 голосов
/ 30 октября 2010

422 необработанный объект (см. RFC 4918, раздел 11.2 )

0 голосов
/ 30 октября 2010

Как сказал Ариян, вы должны основывать свой API на уже определенных HTTP-кодах.Если вы хотите отправить сообщение об ошибке, лучше всего не использовать HTTP-сообщение, а лучше включить его в тело ответа в формате JSON.

0 голосов
/ 30 октября 2010

Ближайшее, что я могу найти, будет 400 Bad Request.

...