#rest #architecture
Вот, что следует учесть при проектирование endpoint-ов, которые будут обновлять состояние ресурсов:
❓Необходимо полное (PUT) или частичное обновление (PATCH)? Возможно, необходимы оба способа. В блоге Postman на этой неделе была статья What We Learned from 200,000 OpenAPI Files. Из нее можно увидеть, что в среднем PUT используется в 10 раз чаще чем PATCH.
❓Должен ли сервер проверять, что клиент использует последнюю версию ресурса? Если это необходимо, то необходимы заголовки Etag и If-Match. Если версия ресурса описанная Etag-м на клиенте и сервере отличается, то сервер выдаст ошибку с 412 кодом (Precondition Failed).
❓Что мы редактируем, сущность или коллекцию сущностей? Для редактирования отдельной сущности (
/todos/:id) подойдут и PUT, и PATCH. Но при редактирование коллекции (/todos/) стоит использовать PATCH с body в формате JSON Patch.