我们有一个restful架构,我有一个关于api的异常和http状态的问题。
我们使用400来处理以下情况:
值不匹配(例如,应为100,但为99)
违反@size,@min,@max,@nullable anc等
在逻辑出错的情况下使用422(不可处理的实体),但这不是客户机错误。例如,尝试将“类别”设置为“已具有类别的产品”。这在客户端是不可预测的。
最后,当它是客户的错误时,我们使用409(冲突)。
例如,如果他试图通过Date发送无效的JSON格式。或者注册日期比当前日期早得多。
但有一种情况可分为以下几类:
我们有一个Tax域,它是整数。
如果客户端发送分数Tax则应引发异常。
从一个侧面看,这显然是400和客户应看到'税不能是部分'。
但是,从另一方面来说-这是客户端的程序员错误,因为他试图发送double/float而不是integer/long(即他发送另一种类型,它类似于pass long而不是string),应该抛出409。
我应该选择什么:400409对于TypeMismatch案例中的Numbers
如果400,我为什么要为数型而为409病例而吐出Date/String
我更喜欢有明确逻辑的答案,而不是“我想”。这不是讨论。

最佳答案

我同意基于意见的问题评论,但我也会把这个抛在一边:

10-06 07:04