Подтвердить что ты не робот

Если API RESTful возвращает 400 или 404 при передаче недопустимого идентификатора

При создании API RESTful и пользователь предоставляет id ресурса, который не существует, вы должны вернуть 404 Not Found или 400 Bad Request.

Например:

https://api.domain.com/v1/resource/foobar

Где foobar не существует.

4b9b3361

Ответ 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.