PATCH API REST лучший вариант именования - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу добавить или заменить купон на заказ через API.Я подумал, что в этих двух возможностях

PATCH / api / orders / {id}

{ "couponCode": "test"}

PATCH / api / orders / {id} / coupon / {couponCode}

Мне нравится второй, потому что в приложении важно применять код купона, и этот URL очень хорошо его определяет.

Являются ли первая и вторая действительные возможности после REST?Второй вариант действителен с методами HTTP PUT и PATCH?Как вы думаете, что лучше?

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Метод PATCH сам по себе не особенно RESTful.REST относится к передаче состояния, и PATCH на самом деле этого не делает, вместо этого он отправляет инструкцию для обновления.

Итак, чтобы сделать RESTful, вам нужно будет PUT запросСоздайте и замените состояние купона полностью .

. Учитывая это, я не одобряю использование PATCH, но я думаю, что этохорошая идея:

  1. Предоставить правильный PUT запрос на полную замену существующего состояния.
  2. После этого добавьте поддержку 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 это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...