使用场景
当多个请求路径要映射到同一个controller 请求下时,项目架构使用 springframework(spring 框架),可以使用
代码示例
(只需要关注 requestMapping 或者 GetMapping 或 PostMapping 内的写法即可)
加在最顶层 controller 上的写法:
只有一个请求路径时
@RequestMapping("/myApi")
@RestController
public class MyApiController {
.........
}
多个请求路径都要映射到这个controller 下时 写法:
@RequestMapping({"/myApi", "myApiOpen"})
@RestController
public class MyApiController {
..........
}
注意这里的 @RequestMapping 注解,里面当存在多个请求路径时,需要使用 { } 包围里面的内容,{ } 其实就是Java 中String[] 显式赋值的时候的一种写法。
当给controller 下的进一步其他请求做多个映射时,写法一致,具体例子如下:
只有一个时:
@RequestMapping("/myApi")
@RestController
public class MyApiController {
@GetMapping("/meth")
public .... myMethod1(......){
..........
}
}
多个时:
@RequestMapping("/myApi")
@RestController
public class MyApiController {
@GetMapping({"/meth", "/myMe"})
public .... myMethod1(......){
..........
}
}
这样不论是请求 /myApi/meth 还是 /myApi/myMe 都会进入 myMethod1 方法
原因
进入使用的注解源码可以看到如下定义:
可以看到 注解中的 value 一律都是 String[] 字符串数据定义,所以在注解中直接使用 { } 其实也就是在默认的给String [] 赋值,{ }本就是数组显式的赋值符号写法。所以spring 本来就支持请求路径可以有多个不同但映射到同一个类上的写法。