Какой код состояния HTTP должен быть возвращен в случае неудачного обновления, поскольку идентификатор не найден? - PullRequest
0 голосов
/ 07 мая 2020

Предположим, у меня есть следующая коллекция ресурсов

/api/people

С каждым ресурсом, идентифицированным их идентификаторами

/api/people/1
/api/people/2
...and so on...

Обновление выполняется путем отправки запроса POST, несущего полезную нагрузку, данные для обновления

POST /api/people/20

{"name":"Yan"}

Если такое обновление не удается, потому что нет ресурса с этим идентификатором (в приведенном выше примере - 20), какой код состояния HTTP должен быть возвращен.

404 Not Found ? Обоснование того, что ресурс под этим URI не существует.

400 Ошибка клиента? Обоснование того, что клиент не смог построить правильный запрос.

Другие статусы?

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Я бы сделал go с 404 Not Found, поскольку запрос может быть обработан, но ресурс не может быть найден, ошибка 400 указывает на то, что запрос имеет синтаксическую ошибку.

https://developer.mozilla.org/pt-PT/docs/Web/HTTP/Status/400

https://developer.mozilla.org/pt-PT/docs/Web/HTTP/Status/404

В другом примечании, если вы обновляете существующие данные, я думаю, вам следует использовать запрос PUT.

0 голосов
/ 07 мая 2020

404 НЕ НАЙДЕНО.

Но лучше использовать PUT для обновлений, потому что он идемпотентен. POST не идемпотентен, и его дизайн должен привести к тому, что новые ресурсы будут лучше вставлены в определенную коллекцию.

Так много запросов к:

Результат POST / collection: collection / 1, collection / 2, collection / 3, ...

PUT / collection / 1 приводит к: collection / 1 всегда

И для успешных обновлений вы можете вернуть: 204 No Content

Источник: Опыт работы с микросервисами REST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...