json - 为多对多关系构建 RESTful API

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

我目前正在为具有三种数据类型的应用程序创建 API; 文件标签人物。这些都是常规联系在一起的;一个 File 有许多 Tags 和附加到它的 Persons

问题是,我不知道如何使用 RESTful API 实际连接它们。 PersonsTags 对于 File 是必不可少的,因此它们会自动返回,无需任何进一步的请求。

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

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

对于标签:

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

对于:

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

如您所见,它们完全相同,目的是使我的 API 易于记录。但问题是,对于多对多关系,我不知道如何将给定的 TagPerson 链接到 File.

我在考虑这个:

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

但这似乎有点笨拙。

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

最佳答案

These are all routinely linked; a File has many Tags and Persons attached to it.

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

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

这将更新 FilePersonsTags 的关联,并保持文件的其他属性不变(这是PATCH 动词 - 部分更新)。

关于json - 为多对多关系构建 RESTful API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38930576/

相关文章:

rest - Apache Atlas 休息 API

json - Spring ResponseEntity<JSONObject> HttpMediaTypeNotAcceptableException

c# - MongoDb .NET - ObjectId 序列化

java - 如何从此 API 中提取 "title"?

URL、正文或 header 中的 RESTful API 子类型?

python - 单页应用程序 + REST 后端的用户管理

android - 使用 android 复制来自 fiddler 的 HttpPost 请求

php - MYSQL 支持面向对象数据库吗?

python - 我怎样才能让不同的客户端每次加载唯一的行(不重叠),而不进行用户登录 session ?

mysql - 学生成绩单数据库设计