我正在使用ASP.NET WebAPI构建符合ODATA的API?
有一个问题,当$ filter没有结果时它应该如何表现?
它应该返回一个空集合吗?或发送HTTP 404响应?
任何想法/推理?我偏向于返回一个空集合,但它会违反建议的做法吗?
答案 0 :(得分:5)
鉴于您没有直接在特定的已知Request-Uri(例如/ resource / {uid})和处理单个资源,您的集合也是已知的可寻址Request-Uri(例如/ resource那么404就不合适了。
如果我在使用您的API,我会期待一个空集合。
答案 1 :(得分:2)
9.1.1。 200 OK响应代码
如果操作成功完成,GET,PUT,MERGE或PATCH请求可以返回200 OK。在这种情况下,响应正文必须包含请求网址中指定的实体或属性的值。
9.2.1。 404未找到响应代码
如果请求URL指定的实体或集合不存在,则服务应该以404 Not Found和空响应正文响应。
中更精确9.1.1响应代码200确定
如果成功完成并且资源的值不为空,则不创建资源的请求将返回200 OK。在这种情况下,响应主体必须包含请求URL中指定的资源的值。
9.2.1找不到响应代码404 404 Not Found表示请求URL指定的资源不存在。响应机构可以提供其他信息。
答案 2 :(得分:1)
我不认为应该使用HTTP 404。该代码用于指示对不存在的资源的引用。
HTTP代码204(没有内容)可能是404的更好选择。但是空集合是一个更好的主意,因为它可以更容易地使用API。