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

Snæ*_*ørn 15 rest asp.net-web-api restangular

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

例如:/api/products当没有产品时返回204.

现在我的问题是我正在尝试使用Restangular来使用API​​,如下所示:

Restangular.all('products').getList().then(function (products) {
    $scope.products = products;
});
Run Code Online (Sandbox Code Playgroud)

但是,这会导致以下javascript错误.

错误:getList的响应应该是一个数组,而不是一个对象或其他东西

是什么赋予了?我找不到有关在Restangular文档中处理任何内容的任何信息

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

Eri*_*ein 21

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

来自RFC 2616,

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

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