我正在设计一个使用 asp.net webapi 来提供由许多jquery网格控件使用的数据的系统。页面加载后,网格会回调数据。我有一个User表和一个Project表。在这些之间是一个存在多对多关系的Membership表。
User
userID
Username
Email
Project
projectID
name
code
Membership
membershipID
projectID
userID
我的问题是将这些数据和关系描述为webapi的最佳方法是什么?
我有以下路线
GET: user // gets all users
GET: user/{id} // gets a single user
GET: project
GET: project/{id}
我认为一种方法是:
GET: user/{id}/projects // gets all the projects for a given user
GET: project/{id}/users // gets all the users for a given project
我不确定路由和控制器的配置应该是什么样的,或者即使这是正确的方法。
答案 0 :(得分:0)
现代标准是一种非常简单的方法REST请仔细阅读并实施。
答案 1 :(得分:0)
与Ph0en1x一样,REST是Web服务的新趋势。看起来您已经使用了一些建议的路线。我在工作中一直在做一些REST设计,这里有一些需要考虑的事情:
与您的路线保持一致。您已经这样做了,但请注意其他开发人员何时开始编写路由。用户需要使用API的一致路线。
保持简单。一个主要目标应该是可发现性。我的意思是,如果我是您系统的常规用户,并且我知道有用户和项目,可能还有另一个称为“目标”的实体...我想猜/目标并获得目标列表。这使用户非常高兴。他们引用文档越少越好。
避免在查询字符串中附加大量垃圾。我们目前在工作中受苦。一旦API获得一些牵引力,用户可能需要更细粒度的控制。小心不要将URL变成凌乱的东西。像/ user?sort = asc& limit = 5& filter = ...& projectid = ...
保持网址简洁明了。我再次喜欢这个设计良好的API。我很容易记住像http://api.twitter.com这样的东西。像http://www.mylongdomainnamethatishardtospell.com/api/v1/api/user_entity/user这样的东西......更难记住,令人沮丧。
仅仅因为在Web上使用REST API并不意味着它与客户端唯一代码中的常规方法完全不同。我已经读过任何方法应该有不超过3个参数的论点。这个想法类似于(3)。如果您发现自己想要扩展,请考虑添加更多方法/路由,而不是更多参数。
我现在知道自己在REST API中想要什么,这是直觉,可发现性,简单性以及避免不断浏览复杂的文档。