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

成功但为空的正文使用什么状态代码?

昌博易
2023-03-14

我和我的团队正在尝试决定使用什么状态代码,我们通过Swagger生成的API客户端有一个< code>204 (No Content)条件,在本例中它比< code>404更有意义。

我们希望显示响应是成功的,但是没有返回< code>Object。

假设它是一个购物车:客户单击购物车并将您带到页面,请求发送到endpoint Get//CartOrderDetails,但购物车中没有项目,我们不希望它通过 API 客户端的 200 路径运行,但我们也不希望它通过 404 路径,因为它不是“未找到”

你们在这种情况下会用什么?

编辑:感谢所有一夜之间的回复!绝对有助于将事情放在光线下,似乎总会有支持和反对204的论据。谢谢你们!

共有1个答案

桂智志
2023-03-14

你们在这种情况下会用什么?

我们不希望它通过API客户端的200路径运行

对于REST来说,这是错误的。

统一接口是一个重要的REST约束。除其他外,这意味着所有资源都使用具有相同语义的自描述性消息。

状态代码元素是一个3位数的整数代码,描述服务器试图理解和满足客户机相应请求的结果。响应消息的其余部分将根据为该状态代码定义的语义进行解释。--RFC 7230号文件

换句话说,状态码是通过网络域传输文档的元数据。您应该根据响应消息的语义学来选择状态码,而不是根据您希望如何处理该消息。

如果您发回给客户端的是所请求资源的表示,那么您应该返回200。

如果资源的表示恰好是零字节长,则可以发送204而不是200,但这并不是真正的目的。204的语义集中了来自远程创作的一个角落案例。

当然,如果您的响应包含一个主体,那么使用204状态码可能会弄得一团糟;所以不要这样做。

200 OK
Content-Type: application/html" target="_blank">json

null
 类似资料:
  • 问题内容: 我用来导航到辅助页面。 页面到页面的导航工作正常。…但是状态为空! 该文档清楚地表明,状态应包含执行导航时所需的所有信息。 这是我正在使用的代码: 不幸的是,数据传递为空: HTML如下: 希望有人能帮忙。谢谢! 问题答案: 和 event ,用于跟踪URL历史记录并从URL传递/获取数据。它们与浏览器的导航(后退/前进)一起使用。 要使用内部导航在Webapp内的页面之间动态传递数据

  • 问题内容: 在服务器端,我只是将json-as-dictionary打印到控制台 现在,每当我通过ajax发出发布请求时,控制台都会打印出包含我所需内容的字典。 在客户端,我一直在尝试使用各种方法来基于成功的ajax调用执行一些jquery。我只是意识到这可能是服务器端的错误,即我没有发送任何请求标头来告诉jquery其ajax调用成功。 那么,如何将OK状态发送回给客户以告诉一切一切正常? 为了

  • 我对API请求有一个奇怪的问题。问题是使用或浏览器时,我使用的url工作正常。但使用异步服务程序时,URL会失败并返回状态代码404。 下面是我的代码:我已经构建了一个异步下载函数: 注意:令牌将过期。 使用很好。但使用我自己的函数会产生: 使用my功能下载其他内容也很好。 那么有人知道为什么服务器在尝试异步访问时返回404吗? 我之前的问题被关闭了,因为你们中的一些人认为这是一个类似的问题:但是

  • 我需要能够访问请求的状态代码。呼叫可以通过200或201两种方式成功。这在通过邮递员呼叫但使用web客户端时很明显,到目前为止我还无法确定发生了什么。 我在想也许我可以在 onStatus() lambda 函数中使用设置一个整数变量。甚至可以访问 lambda 函数中的外部变量吗?

  • 我刚开始在 futurelearn.com 学习编程。 我有一个位图和一个球。任务是编码x方向的边界。 工作代码如下所示: 但我有一个逻辑问题。我想知道为什么我不能用“==”代替“ 这是了解的视频。它应该包含所有可能缺少的信息。 https://www.futurelearn.com/courses/begin-programming/7/steps/42942

  • 我在Android平台上使用谷歌排球。我遇到了一个问题,其中错误空对于我正在使用的RESTful API,我需要确定Http状态代码,该代码通常以401(SC_UNAUTHORIZED)或500(SC_INTERNAL_SERVER_ERROR)的形式到达,我可以偶尔通过以下方式进行检查: 这将引发因为为空。 如何确定错误函数中的 Http 状态代码? 或者,如何确保< code>onErrorR