当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《SpringREST-验证原始GET请求参数》经验,为你挑选了1个好方法。

有没有办法使用注释验证原始(int,String等)GET参数?

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

    //...

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

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



1> ryanp..:

是的,这是可能的.

给出以下控制器:

@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启动程序 - 它将为您执行此操作):

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

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

访问http://localhost:8080/9给出9

访问http://localhost:8080/10给出must be less than or equal to 9

在将来的Spring版本中,似乎正在采取措施使这更容易/更自动化.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有