当前位置: 首页 > 知识库问答 >
问题:

REST API中搜索的响应状态代码

长孙淳
2023-03-14

假设我们有以下 API:

GET /api/guests/{id}
GET /api/guests?name=dummy

没有客人匹配条件时,我应该返回哪个状态码?我的意思是没有名字为假人的客人。

它应该是带有空数组的404204还是0.05?


共有3个答案

宿丰
2023-03-14

200和空项目列表。因为通常会找到访客资源,但它没有与您的查询匹配的项目

袁雅逸
2023-03-14

我会用一个空数组返回200...< br >或204(无内容)

404 是指找不到资源。在本例中,您的资源是来宾的集合...它存在。

楚煜
2023-03-14
匿名用户

考虑以下情况:

    < li> GET /api/guests?name=dummy

这是一个请求集合表示形式的操作。如果没有项目与搜索条件匹配,则在响应正文中返回一个带有空数组的 200 状态代码,指示请求已成功接收、理解并被服务器接受,并且集合本身存在,但搜索未返回任何结果。

  • GET /api/guests/{id}

这是一个使用唯一标识符请求表示单个资源的操作。如果没有找到资源,则返回< code>404错误,表明服务器没有找到具有该标识符的资源。

看看RFC 7231中的状态代码定义(它更新了旧的RFC 2616)。很清楚:

6.3.1. 200 确定

200(OK)状态代码表示请求已成功。200响应中发送的有效负载取决于请求方法。对于本规范定义的方法,有效载荷的预期含义可概括为:

>

  • GET:目标资源的表示形式;

    HEAD:与GET相同的表示,但没有表示数据;

    POST:动作状态或从动作中获得的结果的表示;

    PUTDELETE:操作状态的表示;

    选项:通信选项的表示;

    TRACE:终端服务器接收的请求消息的表示形式。

    [...]

    6.3.5. 204 无内容

    204(无内容)状态代码表示服务器已成功完成请求,并且响应有效负载正文中没有要发送的其他内容。响应头字段中的元数据指的是应用请求的操作后的目标资源及其选定表示形式。

    [...]

    6.5.4. 404 未找到

    < code>404(未找到)状态代码表示源服务器没有找到目标资源的当前表示,或者不愿意公开存在的当前表示。< code>404状态代码并不表示这种缺少表示是暂时的还是永久的;如果原始服务器(大概通过一些可配置的方式)知道该情况可能是永久性的,则< code>410(消失)状态代码优于< code>404。

    [...]

    HTTP 状态代码按类进行组织。看看这个:

    6.3.成功2xx

    状态代码的 2xx(成功)类指示客户端的请求已成功接收、理解和接受。

    6.5.客户端错误4xx

    状态代码的 4xx(客户端错误)类表示客户端似乎出错了。除非响应 HEAD 请求,否则服务器应发送包含错误情况说明的表示形式,以及它是临时条件还是永久条件。

    [...]

  •  类似资料:
    • 问题内容: 我有一个API调用,我需要对其进行一些检查并可能返回各种状态代码。我不需要自定义视图或任何东西,我只需要返回正确的代码。如果用户未通过适当的凭据,则需要返回401状态。如果他们尚未发送受支持的请求格式,则需要返回400状态。 因为它是一个API,所以我真正想做的就是设置响应状态并以一条简单的愚蠢消息退出,该消息说明请求失败的原因(可能使用)。刚好足以完成工作,但我还无法使其正常工作。我

    • 如何从的结果中获取HTTP状态?

    • 我有一个用于搜索的RESTendpoint。

    • 我希望返回http状态代码和响应对象。如果我只是在失败场景中返回response object,则状态返回为200。但是我希望将服务返回的状态(例如:403)与响应对象一起发送。但是下面的代码只是返回消息和状态。在这种情况下,我想要响应对象orderdetails对象,它有失败原因和其他字段。如何将对象传递回客户端有什么帮助吗?

    • 我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头