springboot如何為web層添加統(tǒng)一請求前綴
如何為web層添加統(tǒng)一請求前綴
配置文件方式
application.properties全局配置文件配置:
server.servlet.context-path=/api
實現(xiàn)WebMvcConfigurer接口
重寫configurePathMatch()方法,代碼:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {? ??
? ? /**
? ? ?* 請求路徑添加統(tǒng)一前綴
? ? ?*
? ? ?* @param configurer
? ? ?*/
? ? @Override
? ? public void configurePathMatch(PathMatchConfigurer configurer) {
? ? ? ? configurer.addPathPrefix("/api", c -> c.isAnnotationPresent(RestController.class) || c.isAnnotationPresent(Controller.class));
? ? }
}上面為controller層所有都添加了統(tǒng)一前綴,如果不同版本想使用不同的請求前綴,可優(yōu)化如下:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {? ??
? ? /**
? ? ?* 請求路徑添加統(tǒng)一前綴
? ? ?*
? ? ?* @param configurer
? ? ?*/
? ? @Override
? ? public void configurePathMatch(PathMatchConfigurer configurer) {
? ? ? ? configurer.addPathPrefix("/api", c -> c.isAnnotationPresent(ApiRestController.class))
? ? ? ? ? ? .addPathPrefix("/api/v2", c -> c.isAnnotationPresent(ApiV2RestController.class));
? ? }
}對有 @ApiRestController 注解的 controller 添加 /api 前綴,對有@ApiV2RestController 注解的controller添加 /api/v2 前綴。
@ApiRestController 和 @ApiV2RestController 是自定義注解,繼承自 @RestController:
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.lang.annotation.*;
?
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RestController
@RequestMapping
public @interface ApiRestController {
? ? /**
? ? ?* Alias for {@link RequestMapping#name}.
? ? ?*/
? ? @AliasFor(annotation = RequestMapping.class)
? ? String name() default "";
?
? ? /**
? ? ?* Alias for {@link RequestMapping#value}.
? ? ?*/
? ? @AliasFor(annotation = RequestMapping.class)
? ? String[] value() default {};
?
? ? /**
? ? ?* Alias for {@link RequestMapping#path}.
? ? ?*/
? ? @AliasFor(annotation = RequestMapping.class)
? ? String[] path() default {};
}使用:
@ApiRestController("/demo")
public class DemoController extends BaseController{
}這樣請求地址就成了:http://localhost:8080/api/demo
spring web訪問頁面出現(xiàn)多余前綴和后綴情況
頁面中出現(xiàn)hello.jsp

解決方法
去掉servlet中的前綴后綴配置項

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java中HttpServletResponse響應中文出現(xiàn)亂碼問題
這篇文章主要介紹了Java中HttpServletResponse響應中文出現(xiàn)亂碼問題的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06
SpringBoot管理RabbitMQ中的Channel詳解
這篇文章主要介紹了SpringBoot管理RabbitMQ中的Channel詳解,channel僅存在于connection的上下文中,而不會單獨存在,當channel關閉時,其上的所有channel也會關閉,需要的朋友可以參考下2023-08-08

