在我的应用程序中,我有一个案例,其中我具有将在企业版和标准版中启用的功能。在此功能中,我具有创建实体的数量限制。两个版本的计数限制相同。超过计数时我应该扔403吗?还是只返回422错误代码? 谢谢
答案 0 :(得分:0)
我认为您应该返回http状态406。不可接受。因为这是服务器的当前状态。
403状态适用于登录用户但对服务器中的操作没有足够要求的情况。
伴随错误406,您应该放一个msg来支付薪资或增加经常账户限额。
答案 1 :(得分:0)
要认识的重要一件事是响应的状态代码是(如标头值)元数据:它是以标准化形式提供的信息,以便通用组件可以理解语义发生了什么。细粒度的细节属于消息正文。
例如,考虑网络的模型:如果我们希望浏览器/缓存/反向代理/网络蜘蛛了解正在发生的事情,我们将使用元数据。对于网络的人类读者,响应有效负载中提供了细粒度的详细信息。
此外,元数据属于transporting documents over a network域;服务器正在幕后看起来像网站的后台做有趣的事情。
由于状态码用于通用组件,所以我们对错误代码的正确性的主要衡量标准是“通用组件会做正确的事吗?”看到的时候。
403在HTTP / 1.1中具有以下含义:
403(禁止)状态代码表示服务器理解了请求,但拒绝授权。
“授权”一词有时会使人绊倒,因为听起来这种状态特定于凭据。更仔细的阅读表明并非如此
出于与凭据无关的原因,可能会禁止请求。
在HTTP/1.0中,语言略有不同
服务器理解了该请求,但拒绝执行该请求。
403
的意思是“我不会允许您这样做”,但是对于是否允许其他人这样做却模棱两可。
您可能考虑的另一种可能性是409 Conflict。
409(冲突)状态代码表示由于与目标资源的当前状态冲突而无法完成请求。该代码用于用户可能能够解决冲突并重新提交请求的情况。服务器应生成有效载荷,该有效载荷应包含足够的信息,以使用户能够识别冲突的根源。
据我所知,这些代码是等效的,在某种意义上,通用组件的行为与每种组件相似。
我不考虑406 Not Acceptable,因为这是关于域逻辑的问题,而406是关于proactive negotiation的问题。同样,对于与412 Precondition Failed无关的失败,我不考虑precondition headers。
同样,这里的主题是我们正在HTTP域中寻找正确的匹配项。