首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Spring Boot中为所有控制器指定前缀?

如何在Spring Boot中为所有控制器指定前缀?
EN

Stack Overflow用户
提问于 2015-01-18 10:14:59
回答 8查看 93.2K关注 0票数 84

我有到/user/order的控制器映射

@RestController
@RequestMapping("/users")
public class UserController {
    ...
}

@RestController
@RequestMapping("/orders")
public class OrderController {
    ...
}

我想分别在http://localhost:8080/api/usershttp://localhost:8080/api/orders上通过URL访问它们。

我如何在Spring Boot中实现这一点?

EN

回答 8

Stack Overflow用户

发布于 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
票数 52
EN

Stack Overflow用户

发布于 2018-11-07 02:48:21

如果您使用的是spring boot 2 (spring framework 5),则可以替换application.properties中的属性

server.contextPath

适用于:

server.servlet.context-path=
票数 18
EN

Stack Overflow用户

发布于 2019-04-29 21:25:38

application.properties中的默认路径添加为:

server.servlet.contextPath=/mainPath

这里,/mainPath将是所有控制器的前缀

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28006501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档