我有到/user
和/order
的控制器映射
@RestController
@RequestMapping("/users")
public class UserController {
...
}
@RestController
@RequestMapping("/orders")
public class OrderController {
...
}
我想分别在http://localhost:8080/api/users
和http://localhost:8080/api/orders
上通过URL访问它们。
我如何在Spring Boot中实现这一点?
发布于 2018-07-05 09:59:21
如果您只想为某些控制器添加前缀,我找到了另外两个解决方案
选项1-使用spring SpEL为您的控制器添加一个前缀变量
@RestController
@RequestMapping(path = "${v1API}/users")
public class V1FruitsController {
@GetMapping(path = "")
@ResponseBody
public String list(){
return "[\"Joe\", \"Peter\"]";
}
}
application.properties
v1API=/api/v1
选项2-创建自定义控制器注释
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
@RequestMapping("/api/v1")
public @interface V1APIController {
@AliasFor(annotation = Component.class)
String value() default "";
}
@V1APIController
public class UserController {
@RequestMapping("/users")
@ReponseBody
public String index(){
return "[\"Joe\", \"Peter\"]";
}
}
然后测试它
curl -X GET localhost:8080/api/v1/users
发布于 2018-11-07 02:48:21
如果您使用的是spring boot 2 (spring framework 5),则可以替换application.properties
中的属性
server.contextPath
适用于:
server.servlet.context-path=
发布于 2019-04-29 21:25:38
将application.properties
中的默认路径添加为:
server.servlet.contextPath=/mainPath
这里,/mainPath
将是所有控制器的前缀
https://stackoverflow.com/questions/28006501
复制相似问题