java - REST 的 4xx http 状态代码

标签 java spring rest http http-status-codes

我们有一个 RESTful 架构,我有一个关于我们 API 的异常和 http 状态的问题。

我们使用400适用案例:

  • 值不匹配(例如,预期为 100,但实际为 99)
  • 违反@Size、@Min、@Max、@Nullable 等

使用422 (无法处理的实体)适用于逻辑出现问题但不是客户端错误的情况。例如,尝试将类别设置为已有的产品。这在客户端是不可预测的。

最后,我们使用409 (冲突)适用于客户端错误的情况。 例如,如果他尝试发送无效的 Date格式通过JSON 。或者注册日期远远早于当前日期。

但有一个案例可以分为以下几类: 我们有一个Tax字段为整数。

如果客户端发送小数 Tax那么应该抛出异常。

从一方面来看,这显然是 400并且客户应该看到“税不能是分数”。

但是,从另一面来看 - 这是客户端程序员的错误,因为他试图发送 double /浮点而不是整数/长整型(即他发送另一种类型,就像传递Long而不是String)并且应该抛出409。

我应该选择什么:400409对于 TypeMismatchNumbers案件? 如果 400 ,为什么我应该为 Number 类型辩解,但抛出 409对于 Date/String案例TypeMismatch

我更喜欢有明确逻辑的答案,而不是“我认为”。这不是讨论。

最佳答案

我同意基于意见的问题评论,但我也会将其抛出:

enter image description here

关于java - REST 的 4xx http 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30029710/

相关文章:

java - 如何使用 mockMvc 检查响应正文中的 JSON

Spring <mvc :resources mapping ="/css/**" location ="/css/"/> doesn't work

java - OAuth2 Spring boot 缺少必需的“用户名

java - 在tomcat集群环境中获取ClassNotFoundException反序列化 session 属性

java - 对 volatile 的写入是 Java 中的内存屏障吗

java - Spring MVC默认身份验证如何添加用户/注册

java - 获取 URL 时发生 HTTP 错误

java - 如何使用spring boot格式化json日期格式

java - 使用 AngularJS 调用 WS Rest Java

java - 如何获取整个http post的值?解析 Restful 帖子