使用路径变量对 GET 映射进行自定义验证
Custom validations for GET mapping with pathvariable
我想使用 spring 下面的引导程序进行自定义验证 method.I 想验证 "id" 如果它不是 a 到 z、0 到 9 和 - 那么我想要设置错误消息并将其传递到 ResponseEntity 中。
@RestController
public class 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);
}
您无法自动验证参数中的单个基本类型。
您必须手动验证它。
试试这个:
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);
}
在实际应用中,模式测试应该在实用程序中完成class
另一种解决方案:您可以使用@Pattern,并且不要忘记在您的class.
之前使用@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);
}
}
我想使用 spring 下面的引导程序进行自定义验证 method.I 想验证 "id" 如果它不是 a 到 z、0 到 9 和 - 那么我想要设置错误消息并将其传递到 ResponseEntity 中。
@RestController
public class 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);
}
您无法自动验证参数中的单个基本类型。
您必须手动验证它。
试试这个:
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);
}
在实际应用中,模式测试应该在实用程序中完成class
另一种解决方案:您可以使用@Pattern,并且不要忘记在您的class.
之前使用@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);
}
}