在发送到 spring 控制器之前验证响应正文中的 json 值以避免响应代码 400
Validate json values in response body before sending to spring controller to avoid response code 400
我的 Spring 控制器接受应用程序 json 响应主体作为对象参数。在 Spring 控制器收到它并在它不投射时抱怨之前,我看不到在哪里可以拦截 json 来验证值。
示例:用户将 json 发送到端点 - /createUser
预期:{“用户名”:“johndoe”,“pin”:1234}
接收:{“用户名”:1234,“pin”:“johndoe”}
如果为 int 发送字符串,反之亦然,服务器将显示状态 400。我想自己验证数据并提供自定义 json,详细说明设置不正确的值。
提前致谢!
您可以在控制器中为 @RequestBody
参数创建自己的 class 并对其进行验证。您可以使用一些受支持的注释或自行创建。但是不要忘记把 @Valid
放在 @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
}
有关详细信息,您可以在此处找到它们 validation, create your own validator。
我的 Spring 控制器接受应用程序 json 响应主体作为对象参数。在 Spring 控制器收到它并在它不投射时抱怨之前,我看不到在哪里可以拦截 json 来验证值。
示例:用户将 json 发送到端点 - /createUser
预期:{“用户名”:“johndoe”,“pin”:1234} 接收:{“用户名”:1234,“pin”:“johndoe”}
如果为 int 发送字符串,反之亦然,服务器将显示状态 400。我想自己验证数据并提供自定义 json,详细说明设置不正确的值。
提前致谢!
您可以在控制器中为 @RequestBody
参数创建自己的 class 并对其进行验证。您可以使用一些受支持的注释或自行创建。但是不要忘记把 @Valid
放在 @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
}
有关详细信息,您可以在此处找到它们 validation, create your own validator。