Clo*_*ist 6 rest http-status-codes http-status-code-403 http-status-code-400 http-status-code-409
即使阅读了许多文档,书籍和规范, 我也无法100%确定我应该使用http状态代码403还是409。
有人认为403应该仅用于授权问题,但是看到twitter的api使用403违反更新限制,我认为403的实际使用范围不仅仅限于授权问题。也许可以用来告诉请求违反了服务器端约束。
而且,从规格上看,当我们可以预期客户端可以解决此问题时,似乎使用409。
我会欣赏现实世界中的各种示例,其中包括何时使用403和何时使用409,以及在我的情况下使用哪种代码的见解,我将在下面的摘要中进行介绍(以免违反NDA) )。
编辑后:该示例很长,但简单地说,它是关于约束验证失败时返回什么代码。当约束验证失败时,您是否总是返回400?我应该返回400,而不是403或409吗?
有一个客户告诉服务A哪个书架包含一本特定的书。在向DB记录哪个书放在哪个书架上时,服务A可以告诉客户该客户正试图将书放在错误的书架上。服务A可以通过询问另一个服务B来告知这一点,该服务B在决定书的去向时基本上具有某种逻辑。
在这种情况下,应该为A服务使用什么http代码?
(该请求与服务B的决定相冲突-409?-但客户端无法解决此问题,因为当服务B做出决定时,该请求是永久性的。书号和书架号都在path参数中(即,它们是此端点中的唯一参数),因此客户端无法真正做出任何更改来解决同一请求的问题)
此外,客户端可以告诉服务A不再使用书架(因为书架已满或出于任何原因)。当客户告诉服务A不再使用书架C,然后客户告诉服务A它想将另一本书放到书架C上时,服务A应该告诉客户它不能这样做。在这种情况下,应该为A服务使用什么http代码?(该请求将与表明书架C未使用的数据库状态发生冲突-409?但是客户端无法解决此问题,因为当不使用书架时,该书架在服务A中是永久的,并且永远不会在使用中再次-不是409?)
预先感谢您的时间和投入!
| 归档时间: |
|
| 查看次数: |
3680 次 |
| 最近记录: |