当URI路径合法时,适当的REST响应代码是什么,但参数会将其过滤掉

时间:2014-03-19 11:41:12

标签: rest

如果我正在寻找一组用户,我会GET /api/user,如果我找不到,则会返回200和用户,404如果没有用户收集。但是,如果我有一个收集用户,但现在不是用户,或者我的请求包含一个不返回结果的过滤器,该怎么办?

假设我有2个用户,[{name:"john"},{name:"jill"}]

GET /api/user将返回上面的200GET /api/user?name=john[{name:"john"}]

返回200

但如果没有用户匹配搜索该怎么办?

GET /api/user?name=sam

我:

  1. 使用空列表返回200
  2. 返回204,因为列表为空(基本上是相同的)
  3. 返回404
  4. 我很好GET /api/foo应该返回404,因为没有这样的资源(没有定义foo集合)。我也很好GET /api/user/10如果没有ID为10的用户,则应该返回404,因为没有这样的资源。

    但是如果GET /api/user存在此类资源但其中没有实际用户,或者上面的情况为GET /api/user?name=sam,则 是用户集合,因此/api/user是一个有效的路径;它只是没有匹配给定的过滤器。

    你会回报什么?

    思想?

1 个答案:

答案 0 :(得分:0)

根据我的评论,我更喜欢204以上的空阵列,但不清楚。

这是我能找到的最好的讨论:

https://groups.google.com/forum/#!msg/api-craft/wngl_ZKONyk/hI1n88FeUWsJ