在我的应用程序中,我有一个案例,其中我有一个功能,将在企业版和标准版中启用。在这个功能中,我有创建实体的计数限制。在这个功能中,我有一个实体创建的次数限制,两个版本的次数限制是一样的。当计数超过时,我是否应该抛出403,还是直接返回422错误代码?
在我看来,你应该返回http状态406。不可接受。因为这是服务器的当前状态。
403状态适用于用户已经登录,但没有足够的要求在服务器上进行操作的情况。
除了错误406,你应该放一个msg来支付或增加当前账户的限额。
一个重要的事情是要认识到响应的状态码,是(像头值一样)。元数据信息:它是以标准化形式提供的信息,以便通用组件能够理解正在发生的事情的语义。 细致的细节属于消息主体。
例如,考虑一下网络的模型:如果我们想让浏览器缓存反向代理网络蜘蛛理解正在发生的事情,我们使用元数据。 对于 人类 的读者,在响应有效载荷中提供了细粒度的细节。
另外,元数据属于 网传 域;服务器在看起来像网站的门面后面做着有趣的事情。
因为状态码是为通用组件准备的,所以我们衡量一个错误代码是否正确的主要标准是 "通用组件看到它时,会不会做正确的事情?"。
403 在HTTP1.1中具有这样的含义。
403(Forbidden)状态码表示服务器理解了请求,但拒绝授权。
"authorize "这个词有时会绊住人们的脚步,因为听起来这个状态是针对凭证的。 如果仔细阅读,则会发现并非如此
请求可能因与证书无关的原因而被禁止。
在 HTTP1.0的语言略有不同
服务器理解了这个请求,但拒绝执行。
403
意思是 "我不允许 你 但对是否允许别人做这件事却含糊其辞。
您可以考虑的另一种可能性是 409 冲突.
409(冲突)状态代码表示由于与目标资源的当前状态冲突,请求无法完成。 该代码用于用户可能能够解决冲突并重新提交请求的情况。 服务器应该生成一个包含足够信息的有效载荷,以便用户识别冲突的来源。
据我所知,这些代码是等价的,在某种意义上说,通用组件将以类似的方式对每个组件进行操作。
我不认为 406 不可接受因为这是一个关于领域逻辑的问题,而406是关于 主动协商. 同样,我也不认为 412 先决条件失败 的故障。前提条件.
同样,这里的主题是,我们正在寻找HTTP域中的正确匹配。