POST или PATCH?
«Зависит». PATCH , как и PUT , описывает изменение представления в независимом от домена виде.По сути, вы говорите серверу «изменить вашу копию ресурса так, чтобы она выглядела как this .
Большинство форматов PATCH не предлагают операцию« приращения »;get - это set
или replace семантика (точно так же, как и для PUT). Выраженная в JSON PATCH, вы обычно видите операцию, подобную
{ "op": "replace", "path": "/CallsMade", "value": 42 }
Или, если вы пытаетесьчтобы гарантировать отсутствие утраченных правок
{ "op": "test", "path": "/CallsMade", "value": 41 }
{ "op": "replace", "path": "/CallsMade", "value": 42 }
PATCH также имеет семантику атомарных изменений
Сервер ДОЛЖЕН применять весь набор изменений атомарно и никогда не предоставлять (например, в ответв GET во время этой операции) частично измененное представление.
Так что если вы не можете на самом деле гарантировать, что изменения будут все или ничего, если вы не можете поместить все измененияв одну «транзакцию», тогда PATCH - неправильная идея.
Тем не менее, все, что вы можете сделать с PATCH, также можно сделать с помощью POST - POST просто предлагает меньше гарантий.
Что быправильный формат для увеличения поля CallsMade?
PATCH, как PUT и DELETE, описывает изменение представления ресурса.Обычный ритм будет выглядеть примерно так:
GET /X
(edit)
PATCH /X
REST не имеет значения, какое написание используется для ваших идентификаторов, поэтому все следующие параметры одинаково приемлемы
api/EmployeeStatistics/AddCallMade/EmpId/{empId}
api/EmployeeStatistics/EmpId/{empId}/AddCallMade
api/EDA9E9D4-EC6D-4884-91A6-F15BCE88D060
Мы обычно используем сегменты пути для иерархических данных, поэтому вы можете использовать целевой URI, например, если потребители ожидали отредактировать всю сущность EmployeeStatistic
api/EmployeeStatistics/{empId}
или целевой URI, как этот, если выхотел предоставить ресурс, ограниченный только информацией, связанной с совершенными вызовами
api/EmployeeStatistics/{empId}/callsMade
результаты на кэшах вашего потребителя не совсем совпадают, поэтому вам нужно будет тщательно обдуматьзерно ваших ресурсов.
С POST ... ну, с POST вы можете делать практически все;это карта без HTTP-методов, которая выходит из тюрьмы.По-прежнему существуют последствия для кэширования, но нет ничего принципиально неправильного в том, чтобы иметь один ресурс, который может увеличивать callMade любого сотрудника.