我正在开发一个restful web api和一个hibernate支持的后端。到目前为止,我们已经映射了一些错误代码。例如,当@version验证失败时,我们的api返回http错误代码409。
现在,我们需要映射唯一验证失败时返回的最佳错误代码。例如,我的api有一个业务规则,它规定实体a不能有两个同名的实例。例如,如果我的数据库中有一条名为“xyz”的记录,则无法在数据库中创建另一条名为“xyz”的记录。在这种情况下,什么是最好的返回代码?还有409?
我在“rest-in-practice”一书和google上都做过一些研究,409似乎主要与@version相关,我不能引用409与唯一验证一起使用。
非常感谢您的帮助!谢谢!

最佳答案

我会首先考虑:
422(不可处理实体)状态代码表示服务器
了解请求实体的内容类型,以及
请求实体的语法正确,但无法处理包含的
说明。
在这种情况下,包含的说明是“请创建此新资源”。
“AA>”也经常被使用,理由是资源的存在与创建新资源的尝试相冲突:
409(冲突)状态代码表示请求无法
由于与目标的当前状态冲突而完成
资源。此代码用于用户可能
能够解决冲突并重新提交请求。
此响应代码的其余解释是关于解决冲突,这在您的情况下是不可能的。这就是为什么我要避开这个响应代码。
第三种选择是422 Unprocessable Entity
403(禁止)状态代码表示服务器
理解请求但拒绝批准。[…]然而,
请求可能因与
资格证书。
大多数人都被auth的含义吓跑了,但是文本清楚地指出它在其他情况下是合适的。
如果没有更多关于系统的信息,就没有人能够告诉您要使用的正确代码。看看这些回答的定义,选出最能满足你需求的。无论您选择哪种响应代码,请确保响应实体清楚地描述了问题,以便客户机可以纠正它。

关于rest - 违反“@unique”的最佳返回码是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25015592/

10-12 14:59