REST API可以至少以两种方式拥有参数:
作为url路径的一部分(即/api/resource/parametervalue)
作为查询参数(例如/api/resource?=参数值)
这里的最佳实践是什么?什么时候使用1,什么时候使用2,有什么一般的指导方针吗?
真实世界的例子:Twitter使用查询参数来指定间隔。(http://api.twitter.com/1/statuses/home_timeline.json?since_id=12345&max_id=54321)
把这些参数放在URL路径中会被认为是更好的设计吗?
根据URI标准,路径用于层次参数,查询用于非层次参数。离岸金融中心。对你来说什么是等级制度是非常主观的。
在将多个uri分配给相同资源的情况下,我喜欢将用于标识的参数放入路径中,将用于构建表示的参数放入查询中。(对我来说,这种方式更容易路由。)
例如:
/users/123和/users/123?字段= "姓名、年龄"
/users和/users?name = " John "年龄= 30
对于map reduce,我喜欢使用以下方法:
/用户?name = " John "年龄= 30
/用户/名称:约翰/年龄:30岁
因此,如何构造uri实际上取决于您(以及您的服务器端路由器)。
注意:只是提到这些参数是查询参数。因此,您真正要做的是定义一种简单的查询语言。对于复杂查询(包含与、或、大于等操作符),我建议您使用已经存在的查询语言。URI模板的功能非常有限…