Проверка состояния сообщения http статус

Используя следующий API:

feed?url=XXX

Проверки, выполненные по параметру url:

  1. Если отсутствует: 400 Bad Request
  2. Если пустой / недействительный URL: 422 Unprocessable Entity
  3. Если URL не указывает на действительный канал RSS/Atom: 422??

Какую ошибку статуса следует вернуть для 3.?

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

Я думал о 422 Unprocessable Entity потому что это связано с проверкой, даже если это не напрямую данные (url) но ссылка на эти данные (содержание url).

Каково твое мнение?

1 ответ

422 не подходит для № 2 и № 3. Это относится к пониманию сервера Content-Type заголовок, но фактическое содержимое в теле HTTP-запроса не может быть интерпретировано.

Я думаю, что вы могли бы сделать аргумент, что 502 Bad Gateway уместно здесь. Это немного странно, потому что проблема заключается не только в пользовательской ошибке (входящий параметр url, то есть код 4xx), но и в том, что это происходит на сервере и, в частности, на сервере происхождения (что имеет смысл как 5xx и, в частности, 502).

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

А может быть... возможно, вы можете привести аргумент, что 409 может работать здесь. 409 может использоваться в случае, когда:

  1. Нет ничего особенно плохого в HTTP-запросе.
  2. Но состояние другого ресурса вызывает сбой запроса.

Обычно этот "другой ресурс" находится в той же системе, но я не понимаю, почему внешний фид Atom также не может рассматриваться как конфликтующий.

Потому что, если фид Atom на внешнем сервере "фиксирован", то исходный HTTP-запрос, сделанный пользователем, теперь будет работать. Так что 409 вид здесь уместен.

Другие вопросы по тегам