Nor*_*rtl 96 rest http http-status-codes
我有一个向用户发送消息的应用程序.在post请求中,传输的XML字符串由应该接收该特定消息的所有用户组成.如果列表中的任何用户不存在,我将缺少用户的列表返回给客户端以进行进一步评估.
现在我问自己,应用程序的正确状态代码是什么,表示请求已被接受但有些事情无法完成.
如果不允许在列表中包含缺少的用户,则可以避免该问题.然后发送尝试只会得到4xx错误.但是以这种方式形成API毫无意义.另一方面,我可以认为错误条件纯粹是应用程序特定的.但发送200只是感觉不对.如果深入了解错误响应,给客户端提供一个提示会很好.例如,避免一遍又一遍地向该用户发送消息
Arn*_*rne 59
我遇到了同样的问题,我最终使用了两种不同的解决方案:
202: Accepted
,表明请求是正常的,但并不能保证一切都按原样运行.200
响应中的法线,但包括响应正文中没有显示的内容列表.第二个通常效果最好,但第一个很好,如果你懒惰或使用队列进行处理.
Kyl*_*lar 57
我处理过一个非常类似的问题.在这种情况下,我回来了
207多状态
现在,这不是严格的HTTP,它是WebDAV扩展的一部分,所以如果你也无法控制客户端,那么这对你不利.如果你这样做,你可以这样做:
<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D='DAV:'>
<D:response>
<D:user>user-123</D:user>
<D:status>success</D:status>
</D:response>
<D:response>
<D:user>user-789</D:user>
<D:status>failure</D:status>
</D:response>
</D:multistatus>
Run Code Online (Sandbox Code Playgroud)
但同样,这是一个HTTP扩展,您还需要控制客户端.
我需要同样的问题,在阅读了一些文档后,这个问题的最佳解决方案似乎是用非标准 2xx 响应进行响应。一般客户会将其视为成功,但特定客户可以理解发生了什么。您还可以使用 X-failed: thispart 代码形式的自定义标头来支持此功能。您可能应该以文本形式包含操作的问题是什么,以便通用客户端能够显示所发生情况的本质。这是我在上传文件但目前无法完成处理时所做的操作:
HTTP/1.1 210 Partial success
X-failed: processing
X-reason: server busy
File has been uploaded, however, the task associated with the
file has not started as the server is busy. Re-request processing
at a later time.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43335 次 |
最近记录: |