本文主要是介绍在定义的接口前加前缀路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前因
在一个服务中,既定义了app端接口,又定义了pc端接口,为了方便区分,可以在项目里建立一个名为"app"、"pc"的文件夹,分别为app、pc提供接口。当app和pc接口一致时,写完一端接口后,可以直接拷贝到另一文件夹,直接使用。但当不加前缀的情况下,因接口定义一致,会出现异常。这时候在接口前添加前缀,就可以解决这个问题。
实现步骤
- 定义一个配置类,实现WebMvcConfigurer,重写configurePathMatch方法,指定添加前缀
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@AutoConfiguration
public class MyWebAutoConfiguration implements WebMvcConfigurer {public void configurePathMatch(PathMatchConfigurer configurer) {AntPathMatcher antPathMatcher = new AntPathMatcher(".");configurer.addPathPrefix("/app-api", (clazz) -> {return clazz.isAnnotationPresent(RestController.class) && antPathMatcher.match("**.example.my_2024_demo.ctrl.app.**", clazz.getPackage().getName());});configurer.addPathPrefix("/pc-api", (clazz) -> {return clazz.isAnnotationPresent(RestController.class) && antPathMatcher.match("**.example.my_2024_demo.ctrl.pc.**", clazz.getPackage().getName());});}
}
- ctrl 接口定义文件目录如下图,与上一步指定路径相对应
代码
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class AppTestCtrl {@GetMapping("/test")private String test(HttpServletRequest request) {request.setAttribute("name", "用于测试信息");return "app test";}}
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PcTestCtrl {@GetMapping("/test")private String test(HttpServletRequest request) {request.setAttribute("name", "用于测试信息");return "pc test";}
}
- 接口访问
pc端:http://localhost:8080/pc-api/test
效果
app端:http://localhost:8080/app-api/test
效果
这篇关于在定义的接口前加前缀路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!