我想使用spring boot为以下方法进行自定义验证。我想验证" id"如果它不是a到z,0到9和 - 那么我想设置错误消息并在ResponseEntity中传递它。
@RestController
公共类DataController {
@Autowired DataService dataService;
@RequestMapping("/data/{id}")
public ResponseEntity<Data> getData(@PathVariable String id)
{
Data messages = dataService.getData(id, Data.DataFormat.ALL);
return new ResponseEntity<>(messages, HttpStatus.OK);
}
答案 0 :(得分:1)
您无法自动在参数中验证单个基元类型。
您必须手动验证它。
试试这个:
private static final Pattern ACCEPTED_CHARACTERS = Pattern.compile("^[a-z0-9\\-]+$");
@RequestMapping("/data/{id}")
public ResponseEntity<Data> getData(@PathVariable String id)
{
if (!ACCEPTED_CHARACTERS.matcher(id).matches()) {
return new ResponseEntity<>("Your messge", YOUR CODE);
}
Data messages = dataService.getData(id, Data.DataFormat.ALL);
return new ResponseEntity<>(messages, HttpStatus.OK);
}
在真实应用中,模式测试应在实用程序类中完成
答案 1 :(得分:0)
另一种解决方案:您可以使用@Pattern,不要忘记在课前使用@Validated。
@RestController
@RequestMapping("required url")
@Validated
public class yourClassName{
@RequestMapping("/data/{id}")
public ResponseEntity<Data> getData(@Valid @Pattern(regexp = "^[a-z0-9\\-]+$",message = "Your custom message") @PathVariable String id){
Data messages = dataService.getData(id, Data.DataFormat.ALL);
return new ResponseEntity<>(messages, HttpStatus.OK);
}
}