Метод PATCH
сам по себе не особенно RESTful.REST относится к передаче состояния, и PATCH
на самом деле этого не делает, вместо этого он отправляет инструкцию для обновления.
Итак, чтобы сделать RESTful, вам нужно будет PUT
запросСоздайте и замените состояние купона полностью .
. Учитывая это, я не одобряю использование PATCH
, но я думаю, что этохорошая идея:
- Предоставить правильный
PUT
запрос на полную замену существующего состояния. - После этого добавьте поддержку
PATCH
для оптимизации вещей, которые могут быть медленнымиили неуклюжий.
Так что если вы хотите использовать PATCH
на /api/orders/{id}
, я сначала задаюсь вопросом: как выглядит версия PUT
?
Не знаюЯ не совсем понимаю, что бы значило PATCH
на /api/orders/{id}/coupon/{couponCode}
.Вы обновляете код купона?Это странно, потому что код существует в URI.A DELETE
+ a PUT
имеет больше смысла для меня.Или, может быть, метод HTTP MOVE
может даже помочь?(MOVE
также попадает в лагерь «не RESTful», но это хорошая оптимизация для GET
+ DELETE
+ `PUT).
Если в заказе только 1 купон, я бы предпочел uriструктура, подобная /api/orders/{id}/coupon
, потому что это хороший уникальный ресурс, и имеет смысл заменить его на PUT
(или PATCH
это).