网上的文章五花八门,不写SpringBoot的版本号,导致代码拿来主义不好使了。
本文采用的版本
SpringBoot 2.7.7 Java 1.8
目录
1、默认访问路径
package com.example.demo.controller.api; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") public class AppIndexController { @GetMapping("/index") public String index() { return "app"; } }
访问地址:http://localhost:8080/api/index
2、整个项目增加路由前缀
application.yml
server: servlet: context-path: /prefix
访问地址:http://localhost:8080/prefix/api/index
注意:该方案会将所有的路由都增加一个前缀
3、通过注解方式增加路由前缀
注解
package com.example.demo.annotation; import org.springframework.core.annotation.AliasFor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RestController; import java.lang.annotation.*; /** * controller层统一使用该注解 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @RestController public @interface ApiRestController { /** * Alias for {@link Controller#value}. */ @AliasFor(annotation = Controller.class) String value() default ""; }
配置
package com.example.demo.config; import com.example.demo.annotation.ApiRestController; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * 配置统一的后台接口访问路径的前缀 */ @Configuration public class CustomWebMvcConfig implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer .addPathPrefix("/api", c -> c.isAnnotationPresent(ApiRestController.class)); } }
使用注解
package com.example.demo.controller.api; import com.example.demo.annotation.ApiRestController; import org.springframework.web.bind.annotation.GetMapping; @ApiRestController // @RestController // @RequestMapping("/api") public class AppIndexController { @GetMapping("/index") public String index() { return "app"; } }
访问地址:http://localhost:8080/api/index
4、按照目录结构添加前缀
没有成功,可能是版本的问题
Neither PathPatterns nor String patterns condition