我有两个资源,每个资源都有一个GET,我想将其中一个与另一个关联起来。
假设我们有一个用户列表和一个学校列表
GET /api/users /api/users/5
GET /api/校/api/校/8
每所学校都可以有一个用户列表。此外,每个用户都可以有一个学校列表。进行关联的最佳端点设计是什么?
例如: PUT /api/users/5/schools (在正文JSON obj中发送8)
或PATCH /api/schools/5 (仅向用户obj发送用户列表。不会删除列表中缺少的用户)
感谢你的帮助。谢谢
发布于 2016-09-07 00:07:08
看起来这是用户资源和学校资源之间的多对多关系,在RESTful界面中,您可以通过将这些关系表示为链接来返回描述这些资源之间关系的结果/文档。
因此,用户可以拥有学校列表,您可以将其表示为/api/users/5/schools,这可以是指向学校的链接列表,就像指向school/{id}的链接一样。
反之亦然,如果学校有多个用户,/api/schools/8/users可以发回一个链接列表,每个链接都指向一个user/{id}
从技术上讲,这是可以的,但要注意管理这将是一个麻烦,因为:
当你执行像PUT或PATCH这样的修改操作时,特别是在PATCH的情况下,如果你使用json作为你的有效负载格式,那么就使用JsonPatch。无论如何,在这些情况下,如果你更新一个像/api/users/5/schools这样的,schools/{id}/users的缓存就必须失效,这在很多情况下可能是不确定的。
最简单的方法是去找一个membership资源,在那里你可以列出用户和学校之间的成员关系,它很容易缓存,你也可以很容易地扩展它。:)
有关更多信息,可以查看here
https://stackoverflow.com/questions/39350277
复制相似问题