REST API 设计,RESTful API 命名约定

REST API Design, RESTful API Naming Conventions

我有资源 Draft 具有以下表示形式:

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

我需要设计允许向 groups 添加新组的端点。

例如,假设客户端想通过添加两个新组来修改上面的资源:group3 和 group4,那么在这个操作之后,资源应该如下所示:

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

我不确定这种操作的正确 URL 结构和 HTTP 方法应该是什么。

目前我正在考虑以下选项:

PATCH `/draft/groups/add` 

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

但是,我不太确定这是否是正确的选择。

如有任何帮助,我们将不胜感激,

谢谢

您似乎是通过名称来识别您的草稿,并且每个草稿中都有多个组。如果这是正确的,那么 this 将是 REST 命名约定:
POST /drafts/{draftName}/groups/ HTTP/1.1 - 创建;
PUT /drafts/{draftName}/groups/{groupId} HTTP/1.1 - 更新;
GET /drafts/{draftName}/groups/{groupId} HTTP/1.1 - 获取(集合资源请求时不需要groupId)。

如果 /draft 上的 GET 请求为您提供了组列表,我认为在同一端点上也使用 HTTP 方法来更改组可能是最合乎逻辑的表示。

鉴于此,我想我对如何更改 API 中的组的第一个猜测可能是对 /draft 本身的 PUTPATCH 请求。