因此,我试图显示有意义的、准确的HTTP状态代码,即使在网上查看了示例之后,我也会感到困惑。以下是我的情况:
在接受查询param的URL中:
@POST query
Sample URL: /putRecord?Name=A&Age=25&house=permanent发布于 2014-06-30 13:16:38
广告1。你可以返回,除了代码本身(400)也有一个简短的信息和解释。因此,您可以使用“400Queryparamname必需”或类似的内容来响应,而不是重放“400个坏请求”。此消息称为“原因短语”,并定义为在6.1中,RFC 2616。或者,如果您需要更多的灵活性,可以返回带有说明的文档。
我会考虑使用422个不可处理的实体。来自RFC 4918
422 (非可处理实体)状态代码意味着服务器理解请求实体的内容类型,并且请求实体的语法是正确的(因此,400 (坏请求)状态代码不合适),但无法处理所包含的指令。
广告3。我会返回422,但这真的取决于这种情况是被认为是一个错误的逻辑,或它是一个常规的,预期的情况。
编辑:正如@War10ck在评论中建议的那样,HTTP409(代替HTTP422)也可能是有意义的。
关于处理副本的注意:如果新实体的名称已经在数据库中,则似乎(如果我错了请纠正我),您认为新实体是重复的。如果是这样,您可以考虑使用HTTP而不是HTTP吗?
您可以定义以下资源:
HTTP PUT /record/:name因此,"name“将是URI的一部分。然后,如果有第二个PUT到相同的资源(相同的“名称”),最好用409/422来响应。
如果要为唯一约束使用不同的键,请适当地修改URI。
根据经验,POST适用于您可以拥有给定资源的多个实例的情况,即
HTTP POST /log ;; Because we have many logs并针对每种资源都是唯一的情况:
HTTP PUT /person/:name (or /person/:tax-number if :name isn't unique)另外,请注意,我已经将资源从"putRecord“重命名为"record”- PUT是一个HTTP方法,也没有理由在URI中使用它。
https://stackoverflow.com/questions/24490984
复制相似问题