深度对象路由的Web API最佳实践

And*_*ndy 5 rest restful-url asp.net-web-api

在使用ASP.NET Web API设计RESTful API时,我可以创建多个路径来检索相同的数据.但是我应该吗?它被认为有用还是令人困惑?

例如,如果我有一个父>子>项的对象关系,我可能有三个路由返回相同的单个项:

  • API /父母/:家长/孩子/:儿童/项目/:项目
  • API /儿童/:儿童/项目/:项目
  • API /项目/:项目

提供所有三条路线是否有用,还是应限制在最简单的路线以避免混淆?这方面有最佳做法吗?

max*_*ntz 4

选择使用哪些 URI/路由取决于所需的目的,而不是内容。用户是否有可能或可能在没有考虑特定父母的情况下寻找孩子?如果是,则在单独的根 URI 中提供数据,如果不是,则通过要求用户提供 ParentId 来限制对子数据的访问。

URIapi/children将返回所有子级,无论其父级如何,因此实现了另一个目的,而不是api/parents/:parentId/children只返回 :parentId 实例实际引用的子级。结果将始终包含也可以使用 获取的数据api/children,但它携带附加信息,因为这些子项“属于”指定的父项。

在我看来,您的所有选择都是有效的,因为它们都有不同的目的。不过,我会避免为同一目的使用不同的 URI。