14

Вопрос по rest, http, restful-architecture, http-status-codes – Код состояния HTTP, когда один запрос запрашивает слишком большой ресурс или слишком много из них

Кто-нибудь знает, какой код статуса HTTP является правильным для следующей ситуации? Анонимный клиент может запросить ряд элементов из коллекции из RESTful API с помощьюGET /collection/?range_start=100&range_end=200, Пример запроса ...

2 ответа

-1

Это всегда должно приводить к ошибке клиента 400 серии. Точно какая ошибка по выбору разработчика API / CGI. Я'Я ожидал либо 405, 406, 416 илипоймать все» 417. Разработчик API-интерфейса контролирует текст (текст) этих сообщений об ошибках, чтобы включить более полезную информацию.

18

403 звучит как самый подходящий выбор. Это в основном говоритню-э-э. Ты нечтобы увидеть это "., который в значительной степени имеет место здесь.

10.4.4 403 Запрещено

Сервер понял запрос, но отказывается его выполнить. Авторизация не поможет и запрос НЕ ДОЛЖЕН повторяться. [...]

Конечно, этобыло бы хорошей идеей для органа ответа включитьпричина вы'повторно отклонить запрос.

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

400 не совсем уместно, потому что запрос действителен, и вы это прекрасно понимаете; Это'просто просит больше, чем тыГотов отправить сразу.

409 не подходит, потому что этос конкретно связаны с "государство" ресурса. (Это подходит для вопроса, который вы связали, потому что в этом случае ошибка добавлялась в коллекцию, которая уже была "полный", В вашем случае, однако, этоне ресурс, у которого есть проблема; Это'с просьбой.) Также

Этот код разрешен только в ситуациях, когда ожидается, что пользователь сможет разрешить конфликт и повторно отправить запрос.

согласно которому "повторно» стандартные средстваповторение", В этом случае, независимо от того, что делает клиент, этот запрос будет недействительным.

416 конкретно относится кСпектр" заголовок, так чтов целом.

417 также относится к полю заголовка (в данном случае "Ожидать»), так что's также

422 не подходит, потому что это конкретно означает, что вы отправилиюридическое лицо это синтаксически правильно, но все еще не работает. Поскольку у GET традиционно нет тела запроса (нет сущности),Ничего страшного. Если бы клиент отправлял запрос, у вас могло бы быть дело ... но тогда выЯ также должен привести хороший пример того, почему RESTful API требует POST, который неничего не обновляю.

(Я'м около 47% уверены, что код также неЭто не имеет большого смысла за пределами WebDAV ... но кажется, что есть возможные варианты использования. Только не этот.)

Похожие вопросы