Какой код статуса я должен вернуть, если одна из этих страниц была вызвана без обязательных параметров? (и, следовательно, не может вернуть любой контент).
Вы можете выбрать 404 Not Found
:
Сервер не нашел ничего, соответствующего Request-URI [при условии, что ваши обязательные параметры являются частью URI, т.е. $_GET
] . Не указано, является ли состояние временным или постоянным. Код состояния 410 (Унесенные) СЛЕДУЕТ использовать, если сервер через некоторый внутренне конфигурируемый механизм знает, что старый ресурс постоянно недоступен и не имеет адреса пересылки. Этот код состояния обычно используется, когда сервер не хочет точно указывать, почему запрос был отклонен или когда другой ответ не применим.
(выделите мной)
404 Not Found
- это подмножество 400 Bad Request
, которое также может быть взято, потому что очень ясно, что это такое:
Запрос не может быть понят сервером из-за неправильного синтаксиса. Клиент НЕ ДОЛЖЕН повторять запрос без изменений.
Я не могу предложить, чтобы вы выбрали код ответа WEBDAV, который не существует для клиентов HTTP, использующих гипертекст, но вы можете, это совершенно верно, вы серверный кодер, вы можете фактически взять любой код состояния HTTP-резонанса Вы считаете подходящим для своего HTTP-клиента, дизайнером которого вы также являетесь:
11,2. 422 необработанных объекта
Код состояния 422 (Unprocessable Entity) означает, что сервер
понимает тип содержимого объекта запроса (отсюда
Недопустимый код состояния 415 (неподдерживаемый тип носителя) и
синтаксис объекта запроса является правильным (таким образом, 400 (неправильный запрос)
код статуса не подходит), но не удалось обработать содержимое
инструкции. Например, это условие ошибки может возникнуть, если XML
Тело запроса содержит правильно сформированный (т.е. синтаксически правильный), но
семантически ошибочные инструкции XML.
Объект запроса IIRC является телом запроса. Поэтому, если вы работаете с телами запросов, это может быть уместно, как писал Джулиан.
Вы прокомментировали:
ИМХО, текст для 400 говорит о неправильном синтаксисе. Я предполагаю, что синтаксис здесь относится к синтаксису строки HTTP, которую клиент отправляет на сервер.
Это может быть, но это может быть что-нибудь синтаксически выраженное, весь запрос, только некоторые заголовки запроса, или определенный заголовок запроса, URI запроса и т. Д. общий ответ на ошибку клиента:
Класс кода состояния 4xx предназначен для случаев, когда клиент, похоже, допустил ошибку. За исключением случаев ответа на запрос HEAD, сервер ДОЛЖЕН включать объект, содержащий объяснение ситуации с ошибкой, и является ли это временным или постоянным условием. Эти коды состояния применимы к любому методу запроса. Пользовательские агенты ДОЛЖНЫ отображать любую включенную сущность пользователю.
Важной частью здесь является то, что вы должны сказать клиенту, что пошло не так. Код состояния просто говорит о том, что что-то пошло не так (в классе 4xx), но HTTP не был специально разработан для того, чтобы сделать отсутствующий параметр части query-info заметным как условие ошибки. Фактически, URI знает только то, что есть часть информации запроса, а не то, что она означает.
Если вы думаете, что 400 слишком широк, я предлагаю вам выбрать 404, если проблема связана с URI, например, $_GET
переменные.