【问题标题】:Return Ok with empty list VS. No content用空列表 VS 返回 Ok。无内容
【发布时间】:2014-03-17 16:23:57
【问题描述】:

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

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

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

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

但是这会导致以下 javascript 错误。

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

什么给了?我在Restangular doc中找不到任何关于处理无内容的信息

我是否使用了 204 错误?我应该用空列表返回 200 吗?

【问题讨论】:

  • afaik 204 仅在您的资源从不返回任何内容时使用

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


【解决方案1】:

204 显然被视为“无列表”或 null,而不是空列表。我会说这是一个合理的行为。您可能需要检查 204 并对其进行特殊处理,或者更改 API 以返回没有元素的 200 OK。我会敦促你做后者。我不确定您是否按照预期的方式使用 204。

来自RFC 2616

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

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

【讨论】:

    猜你喜欢
    • 2015-04-19
    • 2012-04-13
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2023-04-02
    相关资源
    最近更新 更多