JCC*_*CyC 143 language-agnostic rest http http-status-codes batch-processing
我正在开发一个RESTful API,其中http://server/thingyapi/thingyblob/1234返回与thingy#1234相关联的文件(也称为"blob")以进行下载.但可能是请求是在服务器中不存在文件的情况下进行的,但绝大多数情况下都会在以后提供.服务器中有一个批处理过程,可以为所有东西生成所有blob.Thingy 1234已经存在,其数据(blob除外)已经可用.服务器还没有生成东西1234的blob.
我不想要回归404; 那是不存在的东西.这是一个存在的东西,但它的blob尚未生成.有点像YouTube视频的"处理".我认为重定向代码也不合适; 没有"其他"网址可供尝试.
在这种情况下返回的HTTP状态代码是什么?
mat*_*sev 71
我建议202 - Accepted.从文档:
该请求已被接受处理,但处理尚未完成.[...]其目的是允许服务器接受对其他进程的请求(可能是每天只运行一次的面向批处理的进程)
Rae*_*ald 45
"问题",例如它,在服务器端:客户端已经完成了一个良好的请求,但服务器无法满足它.所以我倾向于"服务器错误",5xx状态代码.答曰标准:
以数字"5"开头的响应状态代码表示服务器知道它已经错误或无法执行请求的情况......服务器应该包括一个实体[指示]它是暂时的还是永久的.
注意
在可用的代码中,我会说503,"服务不可用"是最合适的:
由于服务器的临时过载或维护,服务器当前无法处理请求.这意味着这是一个暂时的条件,经过一段时间的延迟后会得到缓解.如果已知,则可以在Retry-After报头中指示延迟的长度.如果没有给出Retry-After,客户端应该像处理500响应一样处理响应.
注意:
Retry-After值.您可以提供下次执行批处理的估计完成时间或批处理的执行间隔作为值.定义您自己的5xx状态代码(例如591)虽然允许,但语义错误:
HTTP状态代码是可扩展的...应用程序必须理解任何状态代码的类,如第一个数字所示,并将任何无法识别的响应视为等同于该类的x00状态代码
客户端会将您自己的状态代码视为500,"内部服务器错误",(如上所述)不正确.
Fer*_*ega 25
我认为423 - Locked可以用于此目的:
423(已锁定)状态代码表示方法的源或目标资源已锁定.这个响应应该包含一个适当的前提条件或后置条件代码,例如'lock-token-submitted'或'no-conflicting-lock'.
Bri*_*lly 19
另一种选择:503 - Service Unavailable.
fun*_*oll 19
我不想要回归404; 那是不存在的东西.
该URL与对thingy的请求不对应.
http://server/thingyapi/thingyblob/1234
客户端正在请求一个不存在的thingyblob.如果它存在,你会把它给它们.
404.
ska*_*lee 16
由于您的资源尚未就绪,您可能知道何时(大约)它可用以及客户何时可以重试其请求.这意味着您可能希望使用Retry-After标头.此标头对503(服务不可用)有效,这意味着整个站点已关闭以进行维护,并且3xx(重定向)响应.
在我看来302(发现)有Retry-After标头将是最好的选择,但我不确定响应标头的位置字段是否可以等于请求网址.无论如何,它是循环重定向.
小智 6
409冲突
指示由于请求中的冲突而无法处理该请求,例如在多次更新的情况下发生编辑冲突。[资料来源Wikipedia。]
这可能是适当的。
如果您无法通过返回数据来满足请求-那么它就不会成功。我认为202建议服务器已将请求排队,并且稍后将满足该请求。但是对于您而言,该请求现在是数据请求,但已失败。如果稍后重试,则是另一个请求。
我认为您有冲突..您想要数据..但正在编辑/更新。如果Thingy1234已经存在并且之前已成功下载,但现在正在进行编辑,那么在进行编辑时将不可用,情况也将如此。
| 归档时间: |
|
| 查看次数: |
49503 次 |
| 最近记录: |