为多对多关系构建RESTful API

时间:2016-08-13 07:57:38

标签: json database rest many-to-many api-design

我目前正在为具有三种类型数据的应用程序创建API; FilesTagsPersons。这些都是常规的联系; File附加了许多TagsPersons

问题是,我不知道如何使用RESTful API实际连接它们。 PersonsTags对于File至关重要,因此会自动返回,而不会再提出任何请求。

这是我正在查看Files的结构示例:

GET /files
GET /files/:id
POST /files
PUT /files/:id
PATCH /files/:id

对于Tags

GET /tags
GET /tags/:id
POST /tags
PUT /tags/:id
PATCH /tags/:id

对于Persons

GET /persons
GET /persons/:id
POST /persons
PUT /persons/:id
PATCH /persons/:id

正如您所看到的,它们完全相同,旨在使我的API易于记录。但问题是多对多的关系,我不知道如何将给定的TagPersonFile相关联。

我在考虑这个:

POST /files/:id/tags
DELETE /files/:id/tags/:id

但这似乎有点笨拙。

我的情况的理想结构是什么?

1 个答案:

答案 0 :(得分:1)

  

这些都是常规联系的;文件中附有许多标签和人员。

然后PATCH /files/:id端点似乎是一个好地方:

PATCH /files/:id
{
    "PersonIds": [ 1, 2, 3 ],
    "TagIds": [ 4, 5 ]
}

这将更新与FilePersons的{​​{1}}关联,并保持文件的其他属性不变(这是Tags动词的一点 - 部分更新)。