rest - HTTP GET 请求状态 204 与 404

标签 rest http-status-code-404 httpresponse

我有 2 个资源用户和相册。用户有一个专辑列表。要获取专辑,有 2 个 REST API。

  • user/{userId}/albums/{albumId} 如果未找到,则通过相册 ID 获取相册返回 404
  • user/{userId}/albums 通过 userId 获取所有专辑。在这种情况下,如果用户没有相册,那么状态码 204 或 404 是什么?
  • 最佳答案

    没有任何专辑真的被视为错误吗?假设专辑作为 JSON 数组返回,对这种情况的常见响应将是 HTTP 200,主体为空数组。

    返回 404 表示资源不存在,也就是说甚至不可能为这个特定用户请求专辑列表。但实际上,可以成功返回专辑列表,只是列表为空。对我来说,这似乎并不特别。这与使用不存在的 ID(使用您的其他端点)检索特定专辑完全相反;在这种情况下,404 是正确的。

    虽然 204 似乎比 404 更好,因为它至少告诉客户端请求成功但没有内容,它的意图并不是真正用于表示“成功缺席”。相反,它表示资源确实存在,但由于某种原因,服务器选择不将资源包含在响应正文中 - 例如,请求的目的可能是简单地将一些 header 传回给客户端。

    204 还可以用作对 POST 请求的响应,其中服务器执行了某些操作而不必创建任何新资源(这将暗示 201 CREATED),或者由于某些其他原因与返回任何内容无关资源。

    我认为很明显你需要的是

    GET /user/xxx/albums
    
    HTTP/1.1 200 OK
    
    []
    

    关于rest - HTTP GET 请求状态 204 与 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34312023/

    相关文章:

    java - Spring Boot 安全 Rest API

    java - 服务器端编程移动应用程序与网站

    powershell - Rest API调用可与curl配合使用,但不适用于PowerShell

    c# - 如何返回带有错误消息或异常的 NotFound() IHttpActionResult?

    c# - HttpClient的授权

    php - 典型的 404 响应消息

    JQuery AJAX 对现有 url 抛出 404

    javascript - Firefox 控制台在 HTTP 204 响应中抛出 "no element found"

    android - 在 Coldfusion 中使用 cfheader 和 cfcontent 时在移动浏览器(Android)上下载不成功

    jquery - 使用 jQuery 表单插件 (ajaxForm) 检测错误响应