我有一个方法可以返回用户购买的所有商品,例如
http://myapihost/items/{user_id}
有些用户没有购买任何商品,因此商品将为items = [];
。
返回空集合时回答是否正确?
//pass empty array with 200 OK
Request.CreateResponse(HttpStatusCode.OK, items);
或者
//pass message with 200 OK
Request.CreateResponse(HttpStatusCode.OK, "No items were purchased by the user.");
传递string
200 OK的问题是,在将响应反序列化为List<Item>
之前,最终用户将被迫进行另一次检查,因为通常200 OK返回List<Item>
或者
Request.CreateResponse(HttpStatusCode.NoContent, "No items were purchased by the user.");
RFC将NoContent定义为
服务器已完成请求但不需要返回实体主体,并且可能希望返回更新的元信息。
所以这种反应不正确,对吧?
或者
Request.CreateResponse(HttpStatusCode.NotFound, "No items were purchased by the user.");
RFC将NotFound定义为
服务器未找到与Request-URI匹配的任何内容。
所以这种反应也不正确,对吧?
或者还有其他回应吗?
答案 0 :(得分:2)
发送空数组是2个原因的最佳选择
最终客户端总是期望一致的对象当然可以为null但客户端代码会更清晰
通过网络传输的数据对于空案例而言是最小的,而不是发送消息,因为客户端负责消息和显示消息的语言