REST-маршруты для нескольких патчей к одному ресурсу - PullRequest
0 голосов
/ 15 января 2020

Мы пытаемся преобразовать старые веб-сервисы Wcf / Asmx в Asp. Net WebApi для реализации Restful Apis для ресурсов.

В старой системе у нас есть несколько способов выполнить частичное обновление для одного ресурса.

Пример для Заказчик Ресурс:

Имеет такие атрибуты, как:

  • Идентификатор
  • FirstName
  • Фамилия
  • Электронная почта
  • Адрес1, 2, 3, PostCode
  • Статус (активный, неактивный, приостановлен)

Для управления этими атрибутами Есть несколько методов:

  • UpdateCustomerName ()
  • UpdateCustomerAddress ()
  • UpdateCustomerStatus ()
  • EnableCustomerDiscount ()
  • UpdateCustomerEmail ()

Когда мы пытаемся преобразовать эти функции в службы Restful, мы решили использовать метод Patch для обновления ресурса. Но мы запутались и не уверены, нужно ли нам делать несколько маршрутов для запросов Patch или один маршрут.

Например, мы можем сделать один маршрут PATCH, чтобы покрыть несколько методов

PATCH /api/v1/customers/123

{ "firstName": "john", "surname": "smith" }

ИЛИ

{ "email": "john.smith@gmail.com" }

ИЛИ

{ "status": "suspended" }

Или мы должны сделать несколько маршрутов, которые отражают существующие методы в старой системе

Например:

PATCH /api/v1/customers/123/name
PATCH /api/v1/customers/123/email
PATCH /api/v1/customers/123/status
PATCH /api/v1/customers/123/address
PATCH /api/v1/customers/123/discount

По-моему, я не хочу создавать и поддерживать несколько маршрутов.

В то же время я не хочу реализовывать один метод / маршрут с большим количеством условий и условий, чтобы проверить, предоставлены ли поля, и выполнить разные логики c кодов.

Не могли бы вы предложить, как мы можем сбалансировать и спроектировать REST-маршруты для такого сценария?

...