我有一些关于允许参数传递给我编程的RESTful API的最佳方式的问题。
例如,我想检索关于用户的信息:方法为GET的API调用将为:/api/users/
id应该在url /api/users/5
中传递还是作为实际的GET数据/api/users/?id=5
传递
根据我所读到的内容和我自己的结论,我倾向于选择选项一(在url中传递参数),因为它看起来更直观,也非常干净。
然而,对于更详细的查询来说,这一选择将是困难的。示例:按年龄或上次登录日期获取用户,甚至嵌套查询(从用户5获取所有帖子)。对于这些用例,将数据作为请求参数传递将更加方便,因为这些参数将包含可以容易识别的键值对(/api/users/?age=20
)
我对你的意见很感兴趣:
去这里哪种方式更好?为什么
如果您更喜欢选项2:参数的结构应该如何?
两者都适用
CCD_ 5返回ID为5的用户。CCD_ 6返回年龄为20岁的用户组。CCD_ 7返回用户5的帖子组。
通常,ID是一种特殊情况,因为它标识资源。你不会通过ID来搜索用户——你只会得到你想要的用户。
从这个意义上说,/api/users/5
并不比/api/users?id=5
更RESTful,但它们指的是不同的东西。当您考虑URI语义时,使用用于查询资源集合的参数,/api/users/5
标识单个用户资源,而/api/users?id=5
标识具有单个元素结果的按id过滤的用户集合。