标签: http-status-codes

对于一般不成功的请求(不是错误),适当的HTTP状态代码响应是什么?

我正在创建一个RESTful API,它将处理大量用户交互,包括使用存储的信用卡下订单.

如果订单成功,我将返回200 OK,如果订单请求格式错误或无效,我将返回400 Bad Request.但是,如果在订单的实际处理过程中出现问题,我应该返回什么?

  1. 客户端POSTS为服务器订购用户资源.如果用户不存在,则返回404 Not Found.
  2. 订单格式和信息经过验证.如果无效,则返回400 Bad Request.
  3. 订单已处理完毕.如果订单成功,则会为订单返回201 Created.如果遇到意外错误,则返回500 Server Error.

最后一步是问题 - 如果订单因任何其他原因没有完成,我该返回什么?可能的情况包括:

  • 产品已售罄
  • 达到用户最大订单限制
  • 信用卡交易失败(资金不足等)

这似乎不适合400或500.如果没有更好的代码,我可以将其视为400 - 根据业务规则,请求无效.它似乎不准确.

编辑:还发现了这个相同主题的现有讨论.所有答案似乎都指向使用此类违规的状态代码,并在使用400,409或422扩展之间进行了一些讨论.

rest http http-status-codes

98
推荐指数
5
解决办法
4万
查看次数

部分成功请求的HTTP状态代码

我有一个向用户发送消息的应用程序.在post请求中,传输的XML字符串由应该接收该特定消息的所有用户组成.如果列表中的任何用户不存在,我将缺少用户的列表返回给客户端以进行进一步评估.

现在我问自己,应用程序的正确状态代码是什么,表示请求已被接受但有些事情无法完成.

如果不允许在列表中包含缺少的用户,则可以避免该问题.然后发送尝试只会得到4xx错误.但是以这种方式形成API毫无意义.另一方面,我可以认为错误条件纯粹是应用程序特定的.但发送200只是感觉不对.如果深入了解错误响应,给客户端提供一个提示会很好.例如,避免一遍又一遍地向该用户发送消息

rest http http-status-codes

96
推荐指数
3
解决办法
4万
查看次数

如何解决HTTP 414"请求URI太长"错误?

我开发了一个PHP Web应用程序.我给了用户一个选项,可以一次更新多个问题.在这样做时,有时用户遇到此错误.有没有办法增加apache中URL的长度?

php apache http-status-codes

95
推荐指数
3
解决办法
26万
查看次数

什么是"找不到项目"错误页面的最合适的HTTP状态代码

我很好奇什么是"项目不存在"页面最合适的HTTP状态代码.

如果页面本身不存在,我显然会使用404.但是,我的一个页面有一个userid参数(它是一个"编辑用户"页面),如果没有给定用户ID的用户,我正在显示错误页面,但我也想发送一个4xx状态标题(因为"200 OK"不适合).

我猜404会好的,因为它"找不到"而不是"找不到文件",但我想知道这个案例是否有更好的代码.

http http-status-codes

95
推荐指数
7
解决办法
7万
查看次数

HTTP 301和308状态代码有什么区别?

HTTP 301308状态代码有什么区别?

  • 301 (永久移动):此和所有将来的请求应定向到给定的URI.

  • 308 (永久重定向):应使用另一个URI重复请求和所有将来的请求.

他们似乎很相似.

http http-status-codes http-status-code-301 http-status-code-308

94
推荐指数
1
解决办法
2万
查看次数

设置响应状态代码

我有一个API调用,我需要能够运行一些检查并可能返回各种状态代码.我不需要自定义视图或任何东西,我只需要返回正确的代码.如果用户未通过正确的凭据,我需要返回401状态.如果他们没有发送支持的请求格式,我需要返回400状态.

因为它是一个API,所以我真正想做的就是设置响应状态并退出一条简单的愚蠢消息,说明请求失败的原因(可能使用了a exit).足以完成工作,但我无法使其正常工作.我已经尝试过使用PHP header()和Cake $this->header()(这都在控制器中),但是虽然我收到了退出消息,但是标题显示了200 OK状态.

使用下面的代码,我收到消息,但未设置标头.我错过了什么?

  if( !$this->auth_api() ) {
    header( '401 Not Authorized' );
    exit( 'Not authorized' );
  }
Run Code Online (Sandbox Code Playgroud)

php cakephp http-status-codes cakephp-1.3

91
推荐指数
5
解决办法
12万
查看次数

Android:如何获取HttpClient请求的状态代码

我想下载一个文件,需要检查响应状态代码(即HTTP /1.1 200 OK).这是我的代码剪辑:

HttpGet httpRequest = new HttpGet(myUri);
HttpEntity httpEntity = null;
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httpRequest);
...
Run Code Online (Sandbox Code Playgroud)

我如何获得响应的状态代码?

android httpclient httprequest http-status-codes

87
推荐指数
2
解决办法
8万
查看次数

HTTP状态码0 - 错误域= NSURLErrorDomain?

我正在开发一个iOS项目.

在此应用程序中,我正在从服务器下载图像.

问题:

在下载图像时,我收到请求超时.根据文档HTTP请求超时的状态代码是408.

但在我的应用程序中,我收到HTTP状态代码0,出现以下错误

错误域= NSURLErrorDomain代码= -1001"请求超时." UserInfo = 0xb9af710 {NSErrorFailingURLStringKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg,NSErrorFailingURLKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg,NSLocalizedDescription =请求超时.,NSUnderlyingError = 0x13846870"请求超时."}

在搜索期间,通过互联网,我找不到有关HTTP状态代码0的信息.

任何人都可以向我解释这个吗?

http download http-status-codes nserror

84
推荐指数
8
解决办法
24万
查看次数

用于获取URL列表的HTTP状态代码的脚本?

我有一个我需要检查的URL列表,看看它们是否仍然有效.我想写一个bash脚本,为我做这个.

我只需要返回的HTTP状态代码,即200,404,500等等.而已.

编辑请注意,如果页面显示"404 not found"但返回200 OK消息,则会出现问题.这是一个配置错误的Web服务器,但您可能需要考虑这种情况.

有关详细信息,请参阅检查URL是否转到包含文本"404"的页面

bash curl http-status-codes

82
推荐指数
5
解决办法
11万
查看次数

在响应HTTP GET时返回202"Accepted"是错误的吗?

我有一组资源,其表示被懒惰地创建.构建这些表示的计算可能需要几毫秒到几个小时,具体取决于服务器负载,特定资源和月亮的相位.

收到的第一个GET请求开始在服务器上进行计算.如果计算在几秒钟内完成,则返回计算的表示.否则,返回202"已接受"状态代码,客户端必须轮询资源,直到最终表示可用.

出现这种情况的原因如下:如果结果在几秒钟内可用,则需要尽快检索; 否则,当它变得可用时并不重要.

由于内存有限和请求量很大,NIO和长轮询都不是一个选项(我无法保持足够的连接打开,甚至我甚至无法将所有请求都放在内存中;一次"几秒钟"已经过去了,我坚持多余的要求).同样,客户端限制使得它们无法处理完成回调.最后,请注意我对创建一个POST的"工厂"资源不感兴趣,因为额外的往返意味着我们的分段实时约束超出了预期(此外,它是额外的复杂性;此外,这是一种资源,受益于缓存).

我想在返回202"接受"状态代码以响应GET请求方面存在一些争议,因为我在实践中从未见过它,并且它最直观的用法是回应不安全的方法,但我从来没有发现任何特别令人沮丧的事情.而且,我不保持安全和幂等性吗?

那么,人们对这种方法有何看法?

编辑:我应该提到这是一个所谓的商业网络API - 不适用于浏览器.

http-get http-status-codes

80
推荐指数
3
解决办法
4万
查看次数