最佳端点设计用于关联

时间:2016-09-06 13:29:27

标签: c# asp.net-web-api asp.net-web-api2 endpoint

我有两个资源,每个资源都有一个GET,我想将一个与另一个相关联。

所以我们假设我们有一个用户列表和一个学校列表

GET / api / users / api / users / 5

GET / api / schools / api / schools / 8

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

例如:PUT / api / users / 5 / schools(在JSON obj中发送8个)

或PATCH / api / schools / 5(仅使用用户列表发送用户obj。列表中缺少的用户不会被删除)

感谢您的帮助。 感谢

1 个答案:

答案 0 :(得分: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