Хороший ответ об ошибке делает две вещи: использует правильный HTTP-код состояния (машиночитаемый сигнал) и возвращает согласованное структурированное тело, с которым разработчик может что-то сделать. Несогласованные формы ошибок — один из крупнейших источников боли на стороне клиента.
Используйте стандартный формат ошибок: RFC 7807 (problem+json)
RFC 7807 определяет стандартное тело «problem details» с выделенным media type, поэтому каждая ошибка в вашем API выглядит одинаково:
HTTP/1.1 404 Not Found
Content-Type: application/problem+json
{
"type": "https://api.example.com/errors/not-found",
"title": "Resource not found",
"status": 404,
"detail": "No user exists with id 999",
"instance": "/users/999"
}
