PUT
также можно использовать для создания.Что важно, так это URL.Это обычно принятый шаблон:
PUT /collection/1234 <- Update a specific item OR create it
POST /collection <- Add a new item to a collection
Какой из них вам подходит, зависит от нескольких вещей.Определяет ли сервер URL-адрес нового элемента или клиент?
Если клиент может выяснить, каким становится URL-адрес нового элемента, лучше использовать PUT
, потому что вы можете легче повернутьэто в идемпотентный запрос.
Помните, что при запросе PUT
цель всегда состоит в том, чтобы вы заменили ресурс на целевом URL новым состоянием.
Однако, если сервер создает шаблон URL (возможно, у вас есть автоматически увеличивающийся идентификатор), лучше использовать POST.POST не имеет в родительской коллекции, но это обычно.
Если вы хотите POST
и хотите идемпотентности, вам нужен другой способ выяснить, что-то было повторным запросом.Вы получаете это бесплатно с PUT
.Например, Stripe API решает , добавляя нестандартный заголовок Idempotency-Key
.