0

我对允许将参数传递给我编程的 RESTful API 的最佳方式有一些疑问。

例如,我想检索有关用户的信息:使用方法 GET 的 API 调用将是:/api/users/
id 应该在 url 中传递/api/users/5还是作为实际的 GET 数据传递/api/users/?id=5

根据我阅读并得出的结论,我倾向于选择选项一(在 url 中传递参数),因为它看起来更直观且非常干净。

但是,对于更复杂的查询,该选项会很困难。示例:按年龄或上次登录日期甚至嵌套查询获取用户(从用户 5 获取所有帖子)。对于这些用例,将数据作为请求参数传递会更方便,因为它们包含可以轻松识别的键值对 ( /api/users/?age=20)

我会对您的意见感兴趣:
去这里的更好方式是什么?为什么?
如果您更喜欢选项 2:理想的参数结构应该如何?

4

2 回答 2

2

两者都适用

GET /api/users/5返回 ID 为 5 的用户。 GET /api/users/?age=20返回年龄为 20 岁的用户组。 GET /api/posts/?user_id=5返回用户 5 的帖子组。

通常 ID 是一种特殊情况,因为它标识资源。您不会通过 ID 搜索用户 - 您只需得到您想要的。

于 2013-08-31T00:24:39.183 回答
0

请记住,对于 REST,整个 URI(包括查询字符串)是资源的原子标识符。没有好坏之分,只要 URI 始终标识相同的资源并且由服务提供,而不是由客户端构建。

从这个意义上说,/api/users/5与 RESTful 并没有什么/api/users?id=5不同,但它们指的是不同的东西。当您考虑 URI 语义时,使用用于查询资源集合的参数/api/users/5标识单个用户资源,同时/api/users?id=5标识通过 id 过滤的具有单个元素结果的用户集合。

于 2013-11-04T11:13:12.290 回答