Мы пытаемся преобразовать старые веб-сервисы 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-маршруты для такого сценария?