Предположим, что HTTP-сервер отвечает на POST
с кодом ответа 400, потому что запрос не прошел проверку (например, адрес электронной почты не найден). Если сервер хочет предоставить клиенту дополнительную информацию о характере ошибки, как это нужно вернуть? Для каждого возможного типа контента, используемого в запросах, должно ли в идеале быть связанный тип содержимого «ошибка»?Примеры типов контента для ошибок проверки POST?
Например, если запрос
POST /users
Content-Type: application/x-myuser
{
"email": "[email protected]",
"name": "Michael"
}
ответ может быть
400 Bad Request
Content-Type: application/x-myuser-error
{
"email": "Email address [email protected] not found"
}
Есть ли какие-нибудь хорошие примеры «ошибок» типов контента в открытом доступе?
Если ваш ответ содержит настраиваемый заголовок Content-Type, вам не нужно будет предполагать, что поле 'error' содержит машиночитаемую ошибку, хотя это будет гарантировано типом MIME. Без этого вы предполагаете, что ответ 'application/json' на конкретный код состояния/URL-адреса может быть интерпретирован определенным образом, что не кажется идеальным. – mjs
Вы забыли о статусе кода HTTP. 200 означает, что все прошло нормально, 3xx означает перенаправление, а 4xx или 5xx означает, что вы должны проверить наличие ошибки. На самом деле все просто. –
Я не игнорирую код состояния, но я не вижу, как он помогает клиенту в интерпретации ответа сервера. В своем первоначальном ответе вы приводите примеры двух разных неудачных ответов проверки. Как потребитель, как вы знаете, какой стиль вернулся сервер?Разве Content-Type не будет хорошим способом определить это, так же как 'image/png' сообщает потребителю, как интерпретировать двоичные данные? – mjs