当客户端请求集合上的所有元素但集合为空时,我编写了一个返回204(无内容)的Web API。
例如:/api/products
在没有产品时返回204。
现在我的问题是我正在尝试使用像这样的Restangular来使用API:
Restangular.all('products').getList().then(function (products) {
$scope.products = products;
});
然而,这会导致以下javascript错误。
错误:getList的响应应该是一个数组,而不是一个对象或 别的什么
是什么给出的?我在Restangular doc
中找不到任何有关处理内容的信息我使用204错吗?我应该使用空列表返回200吗?
答案 0 :(得分:21)
204显然被视为"没有列表"或null,而不是一个空列表。我说这是一种合理的行为。您可能需要检查204和特殊情况,或者更改API以返回200 OK,没有元素。我会劝你做后者。我不确定您是否按照预期的方式使用204.
来自RFC 2616,
服务器已完成请求但不需要返回 实体主体
在您的情况下,服务器 需要返回实体主体,只是实体是一个空集合。通常204用于POST或DELETE。