使用ASP.NET Web API设计RESTful API时,我可以创建多个路径来检索相同的数据。但是我应该吗?它被认为有用还是令人困惑?
例如,如果我的父对象关系>小孩>项目,我可能有三条路线返回相同的单项:
提供所有三条路线是否有用,还是应该限制在最简单的路线以避免混淆?在这方面有最好的做法吗?
答案 0 :(得分:3)
选择要使用的URI /路由是预期目的而非内容。用户是否有可能或可以在没有特定父母的情况下寻找孩子?如果是,则在单独的根URI中提供数据,如果不是,则通过要求用户提供parentId来限制对子数据的访问。
URI api/children
将返回所有子级而不管其父级,因此实现了除api/parents/:parentId/children
之外的另一个目的,它只返回子节点:parentId实例实际上有引用。结果将始终包含也可以使用api/children
获取的数据,但它包含其他信息,因为这些孩子属于'到指定的父母。
在我看来,所有选项都是有效的,因为它们都有不同的用途。但是,我会避免为同一目的使用不同的URI。
答案 1 :(得分:0)
如果用户有权访问最低级别的唯一标识符(在您的情况下为:item),那么他们应该只调用
API /项目/:项目
有关父母的信息将是多余的/不相关的。
我会去:
api/parents
api/parents/:parentid
api/parents/:parentid/children
api/children
api/children/:childid
api/children/:childid/items
api/items
api/items/:itemid