【发布时间】:2016-12-04 07:26:51
【问题描述】:
我目前有这个RequestMapping,我通过正则表达式使用验证:
@RequestMapping(value = "/example/{id}", method = GET)
public Response getExample(
@PathVariable("id") String id,
@RequestParam(value = "myParam", required = true) @Valid @Pattern(regexp = MY_REGEX) String myParamRequest,
@RequestParam(value = "callback", required = false) String callback,
@RequestHeader(value = "X-API-Key", required = true) @Valid @Pattern(regexp = SEGMENTS_REGEX) String apiKeyHeader) {
// Stuff here...
}
但是,正则表达式是不够的。相反,我想对标头属性进行一些自定义验证,即
if (!API_KEY_LIST.contains(apiKeyHeader)) {
throw Exception();
}
这可能吗?
【问题讨论】:
-
@RequestHeader(value = "X-API-Key", required = true) @Valid @Pattern(regexp = SEGMENTS_REGEX) String apiKeyHeader 你能告诉我上面的行适合你吗?
-
已有功能请求 Spring backlog,结帐jira.spring.io/browse/SPR-6380。但是,我能够在 Controller 上使用
@Validated注释来实现您正在尝试的功能。 -
请注意,虽然this issue 未解析,但
@PathVariable、@RequestHeader和@RequestParam上的验证注释仅在使用@Validated注释类时才有效。以防有人想知道为什么@Pattern为 OP 工作...... -
你能分享一些关于@Validated & validate headers 的例子吗?
标签: java spring validation spring-boot spring-rest