Json 注释验证
好的,首先,如果我使用的是Json 注释验证,json,spring,validation,annotations,Json,Spring,Validation,Annotations,好的,首先,如果我使用的是@valid,并且传入的是user实例而不是json字符串,那么我可以对用户进行验证。这很好,例如: @RequestMapping(value = "/add", method = RequestMethod.POST) public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) { userRep.save(user); return "r
@valid
,并且传入的是user
实例而不是json字符串,那么我可以对用户进行验证。这很好,例如:
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) {
userRep.save(user);
return "redirect:/";
}
所以问题是如何创建某种API,传入的是Json字符串,并自动验证注释,例如,@Email
,@NotEmpty
?最佳做法是什么
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody String json) {
User user = User.fromJsonToUser(json);
return new ResponseEntity<String>(user.toJson(),header,HttpStatus.CREATED);
}
只需让Spring将字符串解析给用户,并使用相同的@Valid注释对其进行注释:
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody @Valid User user) {
return new ResponseEntity<String>(user.toJson(), header, HttpStatus.CREATED);
}
@RequestMapping(method=RequestMethod.POST,headers=“Accept=application/json”)
公共响应属性createFromJson(@RequestBody@Valid User){
返回新的ResponseEntity(user.toJson(),header,HttpStatus.CREATED);
}
甚至
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<User> createFromJson(@RequestBody @Valid User user) {
return new ResponseEntity<User>(user, header, HttpStatus.CREATED);
}
@RequestMapping(method=RequestMethod.POST,headers=“Accept=application/json”)
公共响应属性createFromJson(@RequestBody@Valid User){
返回新的ResponseEntity(用户、标题、HttpStatus.CREATED);
}
您还可以使用@Valid
对@RequestBody
注释的参数进行注释。@Valid
json字符串?(@RequestBody
@Valid
String json)但我希望验证用户对象,但如何验证?spring将不只是将json字符串解析为用户对象,我需要做什么才能让它工作呢?我不确定我遗漏了什么。我收到了错误-服务器拒绝了此请求,因为请求实体的格式不受请求方法()的请求资源的支持。您必须在类路径中具有Jackson JSON映射器。请参阅本文档中的和grep“Jackson”。是否有任何示例?我发现的只是返回Json而不是接收?看起来我错过了一些简单的东西,但我不能用谷歌搜索它!任何配置的工作示例都将不胜感激
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<User> createFromJson(@RequestBody @Valid User user) {
return new ResponseEntity<User>(user, header, HttpStatus.CREATED);
}