我目前有这个 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();
}
这可能吗?
原文由 ptimson 发布,翻译遵循 CC BY-SA 4.0 许可协议
执行此 IMO 的最佳方法是创建自定义
HandlerMethodArgumentResolver
使用自定义注释看起来像这样@Segment
:然后您的控制器签名如下所示:
您将在 WebMvcConfigurationAdapter 中注册处理程序方法参数解析器: