2016-09-06 51 views
0

我有2个资源,每个资源都有一个GET,我想将其中一个关联到另一个。关联的最佳端点设计

因此,可以说,我们有一个用户列表和学校

GET/API /用户/ API /用户/ 5

GET/API /学校/ API /学校/ 8

列表

每所学校都可以有一个用户列表。另外,每个用户可以有一个学校列表。 什么是进行关联的最佳端点设计?

如:PUT/API /用户/ 5 /学校(在身体JSON OBJ发送8)

或PATCH/API /学校/ 5(发送只有用户列表中的用户OBJ失踪列表中的用户将不被删除)

感谢您的帮助。 谢谢

回答

0

看起来它是您的用户资源和学校资源之间的多对多关系,并且在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资源,其中列出了用户和schoool之间的成员关系,它的缓存容易,并且您也可以轻松进行缩放。 :)

欲了解更多,你可以看看here