Если API RESTful возвращает 400 или 404 при передаче недопустимого идентификатора
При создании API RESTful и пользователь предоставляет id ресурса, который не существует, вы должны вернуть 404 Not Found или 400 Bad Request.
Например:
https://api.domain.com/v1/resource/foobar
Где foobar не существует.
Ответ 1
Я бы вернул 404 в случае, если ресурс не существует (означает, что URL-адрес неверен), и я верну 400, только если вызов остался с некоторыми недопустимыми данными (@PathParam), например,
https://api.domain.com/v1/profile/[email protected]: здесь я пытаюсь получить профиль идентификатора электронной почты, но сам адрес электронной почты ошибочен, поэтому я вернусь 400. https://api.domain.com/v1/profile1111/[email protected] вернет 404, потому что URL-адрес недействителен.
Ответ 2
Должно быть 404 (не найдено). 400 используется, если вы не можете выполнить запрос из-за плохого синтаксиса, однако для вашего случая синтаксис верен, однако нет ресурса foobar.
Вы можете использовать 400, если пользователь использует несуществующий API, как показано ниже:
https://api.domain.com/v1/nonexistAPI/xyz/xyz
Вы также можете обратиться к этому REST API Design Blog, в котором рассказывается, как создавать коды ошибок REST.
Ответ 3
404 Not Found является правильным ответом, я думаю, 400 больше касается тела запросов, а не идентификатора ресурса, поэтому, например, вы можете отправить это путем ошибок проверки.
Ответ 4
Это действительный запрос? Может ли идентификатор ресурса существовать? Отформатирован ли он как правильный идентификатор? Синтаксически ли это правильно? и т.д. Если это так, вы можете использовать 404 Not Found. В противном случае 400 Bad Request более подходит.
Ответ 5
404 будет более распространенной практикой. Его для Resource Not Found. В вашем случае конкретный URL-адрес не найден.
400 обычно используется для Bad Request. Вы можете использовать это для любого плохого запроса. Напр. MissingRequiredQueryParameter, InvalidInput.