REST API Design, Соглашения об именах RESTful API - PullRequest
1 голос
/ 15 февраля 2020

У меня есть ресурс Draft, который имеет следующее представление:

{
   "name": "name",
   "groups": ["group1", "group2"] 
}

Мне нужно спроектировать конечную точку, которая позволила бы добавлять новые группы в groups.

Например, допустим, клиент хочет изменить указанный выше ресурс, добавив две новые группы: group3 и group4, после чего ресурс должен выглядеть следующим образом:

{
   "name": "name",
   "groups": ["group1", "group2", "grpoup3", "group4"] 
}

I я не уверен, какой должна быть правильная структура URL и метод HTTP для такой операции.

В настоящее время я рассматриваю следующий вариант:

PATCH `/draft/groups/add` 

{
    'groups': ["group3", "group4"]
}

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

Буду признателен за любую помощь,

Спасибо

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Если запрос GET на /draft дает вам список групп, я бы чувствовал, что, вероятно, наиболее логично использовать метод HTTP на той же конечной точке для внесения изменений в представление.

Поэтому, учитывая это, я думаю, что мое первое предположение о том, как изменить группы в вашем API, вероятно, будет PUT или PATCH запросом на /draft.

1 голос
/ 15 февраля 2020

Похоже, вы идентифицируете свой черновик по его имени, и у вас есть несколько групп в каждом черновике. Если это правильно, тогда это будет REST Naming Convention:
POST /drafts/{draftName}/groups/ HTTP/1.1 - для создания;
PUT /drafts/{draftName}/groups/{groupId} HTTP/1.1 - для обновления;
GET /drafts/{draftName}/groups/{groupId} HTTP/1.1 - для получения (groupId не требуется при запросе ресурсов коллекции).

...