无法插入资源但可由客户端修复时的 HTTP 状态引用



我有一个资源要通过POST插入;比如预订。在某些情况下,服务器无法插入给定的对象,但需要向用户提供反馈,需要更改什么才能插入。例如,如果您发送包含以下内容的预订:

{
"start": "2020-09-14T15:00:00Z",
"end": "2020-09-14T15:00:00Z",
"memberId": 5,
"seat": "A5",
}

如果服务器看到座位A5已经被占用,但想要返回在该时间范围内空闲的座位列表,我会使用什么?

409冲突似乎有点像我想要的,因为在它的规范中,你可以告诉用户哪里出了问题。但我不确定这是否算是一场冲突。

409冲突似乎有点像我想要的,因为在它的规范中,你可以告诉用户哪里出了问题。

所有4xx响应代码都允许您告诉用户什么是错误的-请参阅RFC 7231

服务器应该发送一个表示,其中包含对错误情况的解释,以及这是暂时的还是永久的情况。

也就是说,409很好。

另一个可以考虑的合理选择是403 Forbidden。

403(禁止(状态代码表示服务器理解请求但拒绝授权。

这两个代码的规范文本是不同的,但如果你查看规范,没有太多迹象表明通用组件对它们有不同的处理——它们都是不可缓存的,也没有对响应标头的语义进行任何重大更改,等等

考虑到效果是相同的,你在很大程度上是在诸如";您希望在访问日志中看到什么&"我们想要发出哪个通用警报";,等等

由于您的运营商可能不希望这些信号与损坏的http请求(400(和安全渗透尝试(403(交叉,因此为与您的内部域逻辑冲突的请求选择不同的代码将使他们的生活更轻松。

最新更新