Проектирование Api. Post или Put

Posted by Gennady on Monday, January 1, 2024

Проектирование Api. Post или Put.

Когда использовать PUT, а когда POST вроде вопрос простой, но и одновременно на него даются разные ответы.

POST:
    Используется для создания нового ресурса.
    Не является идемпотентным (многократные идентичные запросы могут привести к разным результатам).
    Клиент не обязан знать URI создаваемого ресурса заранее.

PUT:
    Используется для обновления или создания ресурса.
    Идемпотентен (многократные идентичные запросы дают одинаковый результат).
    Клиент должен знать URI целевого ресурса заранее.

Такое описание нам дает HTTP rfc и получается:

  • если мы хотим изменить ресурс и знаем его id, то берем идемпотентеный метод PUT. В случае если ресурса с заданным id не существует - будет создан.

    PUT /api/tasks/{id}

  • если мы хотим создать новый ресурс, то используем POST.

    POST /api/tasks