当前位置: 首页 > 知识库问答 >
问题:

在发送到Spring控制器之前验证响应正文中的json值以避免响应代码400

齐俊贤
2023-03-14

我的Spring控制器接受应用程序json响应体作为对象参数。我不知道在Spring控制器接收到json并抱怨它没有强制转换之前,我在哪里可以拦截json来验证这些值。

示例:用户向endpoint-/createUser发送json

期望:{"username":"johndoe","pin": 1234}接收:{"username": 1234,"pin":"johndoe"}

若发送int的字符串或反之亦然,服务器将显示状态400。我想亲自验证数据,并提供一个自定义json,详细说明错误设置的值。

提前感谢!

共有1个答案

颛孙铭
2023-03-14

您可以在控制器中为RequestBody参数创建自己的类,并对其进行验证。您可以使用一些受支持的注释或自己创建。但是别忘了把有效的放在请求体的旁边,这是关键。例如

@RestController
public class UserController {

    @PostMapping("/users")
    ResponseEntity<String> addUser(@Valid @RequestBody User user) {
        // persisting the user
        return ResponseEntity.ok("User is valid");
    }
    
    // standard constructors / other methods
    
}

有关更多信息,您可以在这里找到验证,创建您自己的验证程序。

 类似资料:
  • 问题内容: 我正在编辑内置的表单。 我在对话框中显示该表单,然后提交。 数据已正确输入数据库。 但是我不知道是否需要将一些寄回。其实我对事情有点困惑。 假设我在表中使用``jQuery添加了一行,当我提交表单时,然后在提交数据之后,我想发回那些行数据,以便我可以动态添加表行以显示添加的数据。 我很困惑如何获取这些数据。 这是我当前的代码: 这只是带有成功消息的模板。 问题答案: Symfony 2

  • 我有两个spring boot rest控制器,我希望向客户端发送一个标准的JSON响应结构。 标准响应将由响应时间、api响应代码、状态、apiName、响应(根据api而有所不同)组成。见下文: 为了实现这一点,我创建了以下模型类: 为了创建一个通用的响应包装器,我创建了以下响应util类。 现在的问题是,我来自控制器的响应应该以标准方式序列化。下面是我的控制器方法。 在当前的实现中,我要做的

  • 我用这样的控制器构建了一个json REST服务: 它工作得很好,但是现在我需要修改所有的响应,并为它们添加“状态”和“消息”字段。我读过一些解决方案: 从所有控制器方法返回某个特定类的对象,例如RestResponse,它将包含“状态”和“消息”字段(但这不是通用解决方案,因为我必须修改所有控制器并以新样式编写新控制器) 拦截所有带有方面的控制器方法(但在这种情况下,我无法更改返回类型) 如果我

  • 我可以在POST请求时发送对象列表作为响应,并在VueJs客户端中接收它 但是当我尝试用自定义类响应时(我甚至在请求映射注释中添加了) 在axios的帮助下发送VueJs端请求。邮递 Vue用户界面客户端接收 为什么我可以用对象列表响应而不能用POJO响应,以及如何解决这个问题?非常感谢。 PS.项目依赖于jackson-数据库v2.8.2和Spring v4.3.1

  • 问题内容: 我已经使用像这样的控制器构建了json REST服务: 它工作正常,但现在我需要修改所有响应,并向所有响应添加“状态”和“消息”字段。我已经阅读了一些解决方案: 从某个特定类的所有控制器方法对象返回,例如RestResponse,它将包含“ status”和“ message”字段(但这不是通用解决方案,因为我将不得不修改所有控制器并以新样式编写新控制器) 截取具有方面的所有控制器方法

  • 我想从spring控制器返回一个字符串(json字符串)作为它接收到的AJAX调用的响应,响应可能会根据我是否提交了@Valid表单而有所不同。这就是我处理它的方式,我想知道这是否被认为是最佳实践?请注意,我使用的是@RestController,所以@ResonseBody应用所有方法。