gpt4 book ai didi

java - Spring REST - 验证原始 GET 请求参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:05:06 24 4
gpt4 key购买 nike

有没有一种方法可以使用注释来验证原始(int、String 等)GET 参数?

@RequestMapping(value = "/api/{someInt}",
method = RequestMethod.GET,
produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> someRestApiMethod(
@PathVariable
@Valid @Min(0) @Digits(integer=10, fraction=0)
int someInt) {

//...

return new ResponseEntity<String>("sample:"+someInt, HttpStatus.OK);
}

如您所见,我已经放置了一堆注释来验证 someInt 是一个 10 位正整数,但它仍然接受各种整数。

最佳答案

是的,这是可能的。

给定以下 Controller :

@RestController
@Validated
public class ValidatingController {

@RequestMapping("/{id}")
public int validatedPath(@PathVariable("id") @Max(9) int id) {
return id;
}

@ExceptionHandler
public String constraintViolationHandler(ConstraintViolationException ex) {
return ex.getConstraintViolations().iterator().next()
.getMessage();
}
}

和一个 MethodValidationPostProcessor 在您的上下文中注册如下(或 XML 等价物,对于 Spring Boot web starter 不是必需的 - 它会为您完成):

@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}

假设您的调度程序 servlet 映射到 http://localhost:8080/:

  • 访问 http://localhost:8080/9 得到 9
  • 访问 http://localhost:8080/10 得到 必须小于或等于 9

看起来像moves are afoot在未来的 Spring 版本中使这更容易/更自动化。

关于java - Spring REST - 验证原始 GET 请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34160011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com