用空列表VS返回Ok。无内容

时间:2014-03-17 16:23:57

标签: rest asp.net-web-api restangular

当客户端请求集合上的所有元素但集合为空时,我编写了一个返回204(无内容)的Web API。

例如:/api/products在没有产品时返回204。

现在我的问题是我正在尝试使用像这样的Restangular来使用API​​:

Restangular.all('products').getList().then(function (products) {
    $scope.products = products;
});

然而,这会导致以下javascript错误。

  

错误:getList的响应应该是一个数组,而不是一个对象或   别的什么

是什么给出的?我在Restangular doc

中找不到任何有关处理内容的信息

我使用204错吗?我应该使用空列表返回200吗?

1 个答案:

答案 0 :(得分:21)

204显然被视为"没有列表"或null,而不是一个空列表。我说这是一种合理的行为。您可能需要检查204和特殊情况,或者更改API以返回200 OK,没有元素。我会劝你做后者。我不确定您是否按照预期的方式使用204.

来自RFC 2616

  

服务器已完成请求但不需要返回   实体主体

在您的情况下,服务器 需要返回实体主体,只是实体是一个空集合。通常204用于POST或DELETE。