GetMapping在Spring启动时排除特定的路径变量匹配

时间:2017-11-22 23:56:20

标签: java spring-boot get-mapping

我有一个带有以下GetMapping的控制器

@GetMapping(value = "/dawson/v1/{dataType}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<String> respondWithData(@PathVariable String dataType, @RequestParam(name = "minDate") String min_date, @RequestParam(name = "maxDate") String max_date, @RequestParam(USERID) String user_id, @RequestHeader(value = "Authorization") String authorizationHeader) {

其中dataType可以是String,Map,Object或Calendar之一。我创建了另一个GetMapping,如下所示

@GetMapping(value = "/dawson/v1/signInReq")
public ResponseEntity<String> mySignInRequest(@RequestBody Map<String, String> paramMap, HttpServletRequest request, HttpServletResponse response) {

但是,当我尝试访问/ dawson / v1 / signInReq时,它仍然会遇到第一个映射而不是signInReq。有没有办法将signInReq排除为{dataType}的匹配?

我确实在上面的第一个映射中列出了所有可能的dataTypes的解决方法,但是想知道是否有更好的方法来处理它(正则表达式可能?)。

1 个答案:

答案 0 :(得分:0)

我使用REGEX模式来解析路径的过滤,如下所示:

@GetMapping(value = "/dawson/v1/{dataType:^.*(?!signInReq)}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

正则表达式只匹配不是signInReq的请求。