SpringBoot自定義請求前綴的代碼步驟
前言
在web開發(fā)中,自定義路徑是非常重要的,它可以更容易的區(qū)分不同服務(wù)和不同的功能模塊,使后端服務(wù)接口變得更加有序(完全無規(guī)則的接口簡直糟糕透了) ,SpringBoot經(jīng)常用于web開發(fā),當(dāng)然也可以進(jìn)行路徑的自定義,這篇文章就是記錄如何在SpringBoot中進(jìn)行自定義接口路徑的開發(fā).
環(huán)境準(zhǔn)備
版本
| 依賴 | 版本 |
|---|---|
| JDK | 21 |
| SpringBoot | 3.5.6 |
Pom依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.6</version>
</parent>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>只需要進(jìn)行路徑配置,只用到基礎(chǔ)的springboot的web依賴和JDK.
代碼步驟
1、全局路徑
在SpringBoot中如果想整個應(yīng)用程序都使用自定義的路徑前綴,可以直接在配置文件中進(jìn)行配置,該配置主要用于標(biāo)識運(yùn)行某一個程序或服務(wù). 配置內(nèi)容如下:
server:
servlet:
context-path: /myapp這樣在請求時就需要在請求時加入 /myapp 前綴作為請求. 即:
http://localhost:8080/users
變?yōu)?/p>
http://localhost:8080/myapp/users
2、繼承路徑
在SpringBoot中同樣支持使用繼承的方式來實(shí)現(xiàn)自定義的路徑,即一個子控制器類繼承一個父控制器抽象類.
如下代碼:
抽象類
package com.nodcat.api;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/api")
public abstract class AbsUserController {
}繼承類
package com.nodcat;
import com.nodcat.api.AbsUserController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController extends AbsUserController {
@GetMapping("/users")
public String user() {
return "Hello, user!";
}
}這樣我們就可以通過下面的請求獲取用戶:
http://localhost:8080/api/users
3、配置文件
如果要進(jìn)行不同的包內(nèi)所有類的路徑的自定義配置,可以通過繼承WebMvcConfigurer自定義配置類的方式進(jìn)行,代碼如下:
package com.nodcat.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.Map;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
//app商家接口
//app消費(fèi)者接口
//管理員接口
//開放接口
private final Map<String, String> prefixToPackage = Map.of(
"/app/merchant", "com.nodcat.api.app.merchant",
"/app/consumer", "com.nodcat.api.app.consumer",
"/admin", "com.nodcat.api.admin",
"/open", "com.nodcat.api.open"
);
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
prefixToPackage.forEach((prefix, pkg) ->
configurer.addPathPrefix(prefix, c -> c.getPackage().getName().startsWith(pkg))
);
}
}通過上述配置,我們就對app商家接口,app消費(fèi)者接口,管理員接口,開放接口進(jìn)行前綴的區(qū)分,我們只需要在對應(yīng)的包內(nèi)實(shí)現(xiàn)對應(yīng)的控制器就可以了. (在com.nodcat.api.admin包下的所有控制器路徑都前綴都會加上/admin,即管理員的控制器)
疑問解答
直接通過繼承的方式,在子類使用@RequestMapping 可以實(shí)現(xiàn)路徑拼接么?
不可以,在子類中使用@RequestMapping會覆蓋父類的@RequestMapping的路徑定義,路徑不會被拼接.
總結(jié)
自定義路徑可以通過[全局路徑 繼承路徑 配置文件] 的方式進(jìn)行,你可以在實(shí)際開發(fā)中按實(shí)際需要進(jìn)行選擇.
到此這篇關(guān)于SpringBoot自定義請求前綴的代碼步驟的文章就介紹到這了,更多相關(guān)SpringBoot自定義請求前綴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring的pointcut正則表達(dá)式的實(shí)現(xiàn)
本文主要介紹了spring的pointcut正則表達(dá)式的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Spring?Boot集成JasperReport生成文檔的方法
由于工作需要,要實(shí)現(xiàn)后端根據(jù)模板動態(tài)填充數(shù)據(jù)生成PDF文檔,通過技術(shù)選型,使用Ireport5.6來設(shè)計模板,結(jié)合JasperReports5.6工具庫來調(diào)用渲染生成PDF文檔,這篇文章主要介紹了Spring?Boot集成JasperReport生成文檔,需要的朋友可以參考下2023-09-09
springcloud集成nacos?使用lb?無效問題解決方案
這篇文章主要介紹了解決springcloud集成nacos?使用lb?無效,通過查看spring-cloud-starter-gateway?jar中的自動配置類的源碼,得知,該jar包中是不支持負(fù)載均衡的,需要引入spring-cloud-starter-loadbalancer?來支持,需要的朋友可以參考下2023-04-04
java集合中的迭代器Iterator和數(shù)組內(nèi)置方法及常見的報錯解決方案
文章介紹了Java集合框架中迭代器(Iterator)的使用,以及數(shù)組和集合的內(nèi)置方法,重點(diǎn)解釋了在遍歷集合時刪除元素時可能出現(xiàn)的`ConcurrentModificationException`異常,并說明了如何正確地使用迭代器來刪除集合中的元素,感興趣的朋友跟隨小編一起看看吧2025-02-02
java實(shí)現(xiàn)微信小程序加密數(shù)據(jù)解密算法
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信小程序加密數(shù)據(jù)解密算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09
詳解使用Spring Security進(jìn)行自動登錄驗證
本篇文章主要介紹了詳解使用Spring Security進(jìn)行自動登錄驗證,非常具有實(shí)用價值,需要的朋友可以參考下2017-09-09

