我正在创建一个RESTful API,它将处理大量用户交互,包括使用存储的信用卡下订单.
如果订单成功,我将返回200 OK,如果订单请求格式错误或无效,我将返回400 Bad Request.但是,如果在订单的实际处理过程中出现问题,我应该返回什么?
最后一步是问题 - 如果订单因任何其他原因没有完成,我该返回什么?可能的情况包括:
这似乎不适合400或500.如果没有更好的代码,我可以将其视为400 - 根据业务规则,请求无效.它似乎不准确.
编辑:还发现了这个相同主题的现有讨论.所有答案似乎都指向使用此类违规的状态代码,并在使用400,409或422扩展之间进行了一些讨论.
我有一个向用户发送消息的应用程序.在post请求中,传输的XML字符串由应该接收该特定消息的所有用户组成.如果列表中的任何用户不存在,我将缺少用户的列表返回给客户端以进行进一步评估.
现在我问自己,应用程序的正确状态代码是什么,表示请求已被接受但有些事情无法完成.
如果不允许在列表中包含缺少的用户,则可以避免该问题.然后发送尝试只会得到4xx错误.但是以这种方式形成API毫无意义.另一方面,我可以认为错误条件纯粹是应用程序特定的.但发送200只是感觉不对.如果深入了解错误响应,给客户端提供一个提示会很好.例如,避免一遍又一遍地向该用户发送消息
我开发了一个PHP Web应用程序.我给了用户一个选项,可以一次更新多个问题.在这样做时,有时用户遇到此错误.有没有办法增加apache中URL的长度?
我很好奇什么是"项目不存在"页面最合适的HTTP状态代码.
如果页面本身不存在,我显然会使用404.但是,我的一个页面有一个userid参数(它是一个"编辑用户"页面),如果没有给定用户ID的用户,我正在显示错误页面,但我也想发送一个4xx状态标题(因为"200 OK"不适合).
我猜404会好的,因为它"找不到"而不是"找不到文件",但我想知道这个案例是否有更好的代码.
HTTP 301和308状态代码有什么区别?
301 (永久移动):此和所有将来的请求应定向到给定的URI.
308 (永久重定向):应使用另一个URI重复请求和所有将来的请求.
他们似乎很相似.
http http-status-codes http-status-code-301 http-status-code-308
我有一个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) 我想下载一个文件,需要检查响应状态代码(即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)
我如何获得响应的状态代码?
我正在开发一个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的信息.
任何人都可以向我解释这个吗?
我有一个我需要检查的URL列表,看看它们是否仍然有效.我想写一个bash脚本,为我做这个.
我只需要返回的HTTP状态代码,即200,404,500等等.而已.
编辑请注意,如果页面显示"404 not found"但返回200 OK消息,则会出现问题.这是一个配置错误的Web服务器,但您可能需要考虑这种情况.
有关详细信息,请参阅检查URL是否转到包含文本"404"的页面
我有一组资源,其表示被懒惰地创建.构建这些表示的计算可能需要几毫秒到几个小时,具体取决于服务器负载,特定资源和月亮的相位.
收到的第一个GET请求开始在服务器上进行计算.如果计算在几秒钟内完成,则返回计算的表示.否则,返回202"已接受"状态代码,客户端必须轮询资源,直到最终表示可用.
出现这种情况的原因如下:如果结果在几秒钟内可用,则需要尽快检索; 否则,当它变得可用时并不重要.
由于内存有限和请求量很大,NIO和长轮询都不是一个选项(即我无法保持足够的连接打开,甚至我甚至无法将所有请求都放在内存中;一次"几秒钟"已经过去了,我坚持多余的要求).同样,客户端限制使得它们无法处理完成回调.最后,请注意我对创建一个POST的"工厂"资源不感兴趣,因为额外的往返意味着我们的分段实时约束超出了预期(此外,它是额外的复杂性;此外,这是一种资源,受益于缓存).
我想在返回202"接受"状态代码以响应GET请求方面存在一些争议,因为我在实践中从未见过它,并且它最直观的用法是回应不安全的方法,但我从来没有发现任何特别令人沮丧的事情.而且,我不保持安全和幂等性吗?
那么,人们对这种方法有何看法?
编辑:我应该提到这是一个所谓的商业网络API - 不适用于浏览器.
http ×5
php ×2
rest ×2
android ×1
apache ×1
bash ×1
cakephp ×1
cakephp-1.3 ×1
curl ×1
download ×1
http-get ×1
httpclient ×1
httprequest ×1
nserror ×1