精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于Spring Boot給所有Controller接口添加統一前綴的五種方式

開發 前端
在Spring應用程序中,負責處理Web請求的主要組件是DispatcherServlet。通過自定義這個組件,我們可以相當程度地控制請求的路由方式。

環境:Spring Boot3.2.5

1. 簡介

在Spring Boot應用程序中,每個控制器都可以有自己的URL映射。這使得單個應用程序能夠在多個位置提供Web接口。例如,我們可以將API接口分組為邏輯分組,如內部和外部。

然而,有時我們可能希望將所有接口置于一個共同的前綴之下。在本篇文章中,我將深入探討為所有Spring Boot Controller使用共同前綴的不同方法。

2. 基于Servlet上下文

在Spring應用程序中,負責處理Web請求的主要組件是DispatcherServlet。通過自定義這個組件,我們可以相當程度地控制請求的路由方式。

接下來先來看看兩種自定義DispatcherServlet的方法,這樣我們的所有應用程序端點都將可以在一個共同的URL前綴下訪問。

2.1 配置DispatcherServlet Bean

@Configuration
public class DispatcherServletCustomConfiguration {


  @Bean
  public DispatcherServlet dispatcherServlet() {
    return new DispatcherServlet() ;
  }
  @Bean
  public ServletRegistrationBean dispatcherServletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(
      dispatcherServlet(), "/api/") ;
    registration.setName("dispatcherServlet") ;
    return registration ;
  }
}

在這里,我們創建了一個封裝 DispatcherServlet Bean 的 ServletRegistrationBean。 設置了該Servlet的訪問前綴路徑為:/api/。這意味著我們的所有接口都必須通過該基礎 URL 前綴進行訪問。

2.2 基于配置屬性

我們也可以通過使用應用程序屬性來達到同樣的效果。在 Spring Boot 2.x 之后的版本中,我們可以在 application.yml文件中添加以下內容:

server:
  servlet:
    contextPath: /api

但在之前的版本則需要通過如下方式配置

server:
  contextPath: /api

在2.1中我們通過編程的方式設置了統一的前綴,其實我們還可以通過如下屬性配置

spring:
  mvc:
    servlet:
      path: /api

這種方式通過是給DispatcherServlet配置路徑訪問前綴。

基于Servlet上下文方式的優缺點:

上面介紹的兩種方法的主要優點也是它們的主要缺點:它們會影響應用程序中的每個接口。對于一些應用程序來說,這可能完全沒問題。然而,一些應用程序可能需要使用標準的端點映射來與第三方服務進行交互——例如OAuth交換。在這些情況下,這樣的全局解決方案可能并不合適。

3. 基于注解

為 Spring 應用程序中的所有控制器添加前綴的另一種方法是使用注解。下面,我將介紹兩種不同的方法。

3.1 使用SpEL

使用 Spring Expression Language (SpEL) 和標準 @RequestMapping 注解。使用這種方法,我們只需在每個控制器中添加一個需要前綴的屬性,如下示例:

@Controller
@RequestMapping(path = "${pack.app.apiPrefix}/users")
public class UserController {
}

配置文件中我們只需要配置上pack.app.apiPrefix屬性即可。

3.2 自定義注解

這種方式需要我們自定義注解,這完全可以仿照@GetMapping、@PostMapping等這類注解來實現即可,如下示例:

@RequestMapping(value = "/api/")
public @interface PackMapping {
}
// 使用
@RestController
@PackMapping
public class SomeController {
  @RequestMapping("/users")
  public String getAll(){
    return "..." ;
  }
}

基于注解的優缺點:

這兩種方法解決了前一種方法的主要問題:它們都能對哪些控制器獲得前綴進行細粒度控制。我們可以只對特定控制器應用注解,而不是影響應用程序中的所有接口。

4. 服務端轉發

使用服務器端轉發。與重定向不同,轉發不涉及向客戶端發送響應。這意味著我們的應用程序可以在接口之間傳遞請求,而不會影響客戶端。

下面編寫一個簡單的控制器,其中包含兩個接口:

@RestController
public class EndpointController {
  @GetMapping("/endpoint1")
  public String endpoint1() {
      return "Hello from endpoint 1";
  }
  @GetMapping("/endpoint2")
  public String endpoint2() {
      return "Hello from endpoint 2";
  }
}

接下來,我們根據所需的前綴創建一個新控制器:

@Controller
@RequestMapping("/api/endpoint")
public class ApiPrefixController {
  @GetMapping
  public ModelAndView route(ModelMap model, HttpServletRequest request) {
    String action = request.getHeader("X-ACTION");
    return switch (action) {
      case null -> new ModelAndView("forward:/error") ;
      case "xxx" -> new ModelAndView("forward:/endpoint1", model) ;
      case "zzz" -> new ModelAndView("forward:/endpoint2", model) ;
      default -> new ModelAndView("forward:/home") ;
    } ;
  }
}

這個控制器有一個接口,它充當路由器。將原始請求轉發到我們的另外兩個端點之一。

5. Nginx反向代理

通過Nginx配置反向代理來管理統一的前綴

server {
  listen              80;
  server_name         default;


  location /api/ {
    proxy_set_header Host $host ;
    proxy_set_header  X-Real-IP        $remote_addr ;
    proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for ;
    proxy_set_header X-NginX-Proxy true ;


    rewrite ^/api/(.*)$ /$1 break ;
    proxy_pass http://www.pack.com ;
  }
}

這種方式最為簡單,不對我們的業務代碼做任何的調整。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2025-06-30 01:45:00

2025-02-12 08:47:07

SpringAPI接口

2022-08-18 09:38:02

Spring跨域

2025-06-06 08:28:56

2024-08-01 09:10:03

2025-02-03 09:00:00

API接口性能

2011-11-25 10:25:27

SpringJava

2011-02-28 13:51:30

Spring事物配置

2009-06-19 18:26:38

Spring事務配置

2025-10-27 01:00:00

2025-02-13 07:45:26

APISpringHTTP

2021-12-31 13:40:43

Spring Boot熱部署Java

2021-04-30 07:34:01

Spring BootController項目

2024-10-18 08:00:00

SpringBoot框架開發

2011-06-03 11:53:06

Spring接口

2025-06-04 02:10:00

2023-09-08 08:23:29

Servlet程序MVC

2025-08-08 01:55:00

SpringJSON日期

2020-09-23 16:31:38

C++C++11啟動線程

2024-10-12 08:18:21

Spring接口組件
點贊
收藏

51CTO技術棧公眾號

中日韩高清电影网| 国产 日韩 欧美 在线| 国产69精品久久久久9999人| 欧美国产日本韩| 91在线播放国产| 久久精品国产av一区二区三区| 亚洲欧洲色图| 91精品欧美一区二区三区综合在 | 中国特级黄色片| 成人影院入口| 亚洲人成精品久久久久久| 国产 高清 精品 在线 a| 精产国品一区二区| 国产精品毛片一区二区在线看| 欧美zozo另类异族| 午夜激情福利在线| 91九色美女在线视频| 国产精品美女www爽爽爽| 国产伦精品一区二区三区在线| 中文字幕 国产精品| 欧美日本精品| 色婷婷**av毛片一区| www.超碰97| 蜜桃在线一区| 欧美午夜影院一区| 免费国产黄色网址| 国产精品蜜臀| 亚洲欧美日韩国产综合在线| 欧美伦理一区二区| 亚洲精品97久久中文字幕| 乱一区二区av| 国产成人精品亚洲精品| 日本特黄特色aaa大片免费| 天天久久综合| 揄拍成人国产精品视频| 亚洲成人av免费在线观看| 秋霞一区二区三区| 欧美精品三级日韩久久| 青青在线免费观看视频| 综合日韩av| 午夜精品久久久久久久| 国产在线无码精品| 日韩理伦片在线| 中文字幕av一区二区三区高 | 亚洲va欧美va天堂v国产综合| 黄色免费高清视频| 黄色成人影院| 国产精品久久久久婷婷二区次| 欧美精品一区二区三区久久| 天天在线女人的天堂视频| 成人免费av在线| 99久久免费国| 欧美 日韩 国产 在线| 成人免费看的视频| 国产女主播一区二区三区| 99国产精品久久久久久久成人| 激情小说亚洲一区| 91精品中文在线| 97精品久久人人爽人人爽| 美女网站视频久久| 91麻豆国产精品| 99热在线只有精品| 国产99久久久久久免费看农村| 99re国产在线播放| 黄色av网址在线| 91在线一区二区三区| 欧美精品一区二区三区在线四季| 欧美熟妇另类久久久久久不卡 | 国产欧美精品一区二区| 香蕉污视频在线观看| 日韩av在线免费观看不卡| 欧洲成人免费aa| 亚洲久久在线观看| 亚洲视频成人| 69视频在线播放| xxxxxx国产| 日韩图片一区| 欧美一区亚洲一区| 久久久久99精品成人片三人毛片| 亚欧美无遮挡hd高清在线视频 | 91在线免费看网站| 国产日韩在线观看一区| 懂色av一区二区三区免费看| 国产精品美女xx| 天天射天天色天天干| 91在线一区二区| 欧美主播一区二区三区美女 久久精品人 | 亚洲成av人综合在线观看| 精品视频在线观看一区| 亚洲私拍视频| 在线亚洲欧美专区二区| 91国产精品视频在线观看| 久久国内精品| 日韩一级成人av| 香港三日本8a三级少妇三级99| 三级小说欧洲区亚洲区| 亚洲最新中文字幕| 大地资源高清在线视频观看| 亚洲欧美一级二级三级| 国内久久久精品| 国产对白videos麻豆高潮| 夜久久久久久| 国产精品视频在线观看| 99国产揄拍国产精品| 成人精品gif动图一区| 欧美大香线蕉线伊人久久| 成人欧美亚洲| 一区二区三区在线观看欧美| 国产精品999视频| 日本午夜免费一区二区| 337p日本欧洲亚洲大胆精品| 国产精品成人一区二区三区电影毛片| 成人嫩草影院| 久久91亚洲精品中文字幕奶水| 亚洲精品1区2区3区| 日韩av中文字幕一区二区三区| 91视频免费进入| 日本福利片在线| 亚洲欧美视频在线观看视频| 男人用嘴添女人下身免费视频| 国模套图日韩精品一区二区| 91精品久久久久久蜜臀| 亚洲成人av免费在线观看| 91综合久久| 国产69久久精品成人看| av免费观看在线| 久久精品亚洲麻豆av一区二区| 91成人在线视频观看| 国产伦精品一区二区三区视频金莲| 欧美精品第1页| 精品黑人一区二区三区观看时间| 五月精品视频| 国产精品99久久久久久久久 | 欧美在线一级| 337p日本欧洲亚洲大胆色噜噜| 欧美激情国产精品免费| 青青草97国产精品免费观看无弹窗版 | 精品国产免费人成电影在线观看四季| 中文字幕免费高清| 日韩香蕉视频| 成人激情视频在线观看| 不卡在线视频| 日韩欧亚中文在线| 中文字幕a在线观看| 天天影视综合| 国产精品日韩专区| 青青草免费在线视频| 亚洲国产日韩一级| 黄色a级三级三级三级| 欧美精品一区二区久久| 国内精品一区二区三区四区| 日本激情一区二区| 亚洲国产美女搞黄色| 91丝袜超薄交口足| 99久久亚洲精品| 国产精品久久久久久久久久| 青青草av免费在线观看| 午夜av电影一区| 女性生殖扒开酷刑vk| 天天综合国产| 国产美女扒开尿口久久久| 国产精品四虎| 欧美网站一区二区| 亚洲精品午夜视频| 久久夜色精品| 欧美性色黄大片人与善| 亚洲伊人av| 亚洲人免费视频| 日韩欧美一区二区一幕| 国产亚洲欧美一区在线观看| 黄色片一级视频| 最近国产精品视频| 国产精品久久久久高潮| 成人在线视频成人| 欧美视频一区二区在线观看| 中文天堂资源在线| 久久99精品国产麻豆婷婷| 香蕉精品视频在线| 2020国产精品小视频| 色婷婷综合成人| 亚洲av无码乱码国产麻豆| 亚洲午夜成aⅴ人片| 91黄色免费视频| 亚洲综合不卡| 日韩欧美国产二区| jizzjizz少妇亚洲水多| 俺去啦;欧美日韩| 国产国语亲子伦亲子| 亚洲一区视频在线| wwwww在线观看| 手机精品视频在线观看| 亚洲图片小说在线| 日韩黄色av| 午夜精品视频网站| 韩国三级在线观看久| 欧美日韩国产精选| 欧美日韩中文字幕在线观看| 成人看片黄a免费看在线| 毛片一区二区三区四区| 99欧美视频| 国产精品免费在线播放| 偷拍视频一区二区三区| www.欧美精品| 欧美 日韩 国产 在线| 欧美亚洲国产bt| 欧美88888| 久久影视一区二区| 日本人69视频| 亚洲色诱最新| 国产成人精品免费看在线播放 | 中文字幕在线三区| 日韩毛片在线观看| 超碰在线播放97| 91福利资源站| 亚洲一区二区91| 中文av一区特黄| 极品白嫩的小少妇| 奇米888四色在线精品| 日本一级黄视频| 欧洲杯半决赛直播| 久久久精彩视频| 免费高清视频在线一区| 久久久午夜视频| 日韩国产福利| 精品91自产拍在线观看一区| 一区二区小视频| 五月天婷婷综合| 欧美日韩色视频| 国产三区在线成人av| 99精品一区二区三区无码吞精| 日本欧美在线看| 男人和女人啪啪网站| 伊人久久大香线蕉精品组织观看| 日本成人黄色| 欧美挤奶吃奶水xxxxx| 亚洲最大福利网站| 91av一区| 98精品在线视频| 欧美videossex| 欧美国产精品人人做人人爱 | 亚洲男人天堂古典| www.色视频| 在线不卡一区二区| 国产精品一区二区三区四| 午夜成人免费视频| 久久久久久久久久久网| 亚洲视频资源在线| 九九热久久免费视频| 久久久久久久网| 亚洲区自拍偷拍| 久久综合成人精品亚洲另类欧美| 午夜免费福利影院| 岛国一区二区三区| 国模大尺度视频| 国内精品伊人久久久久影院对白| 男人透女人免费视频| 日本不卡一二三区黄网| 亚洲乱码国产一区三区| 久久久久91| 国产精品免费成人| 视频一区二区三区入口| 99色精品视频| 蜜桃av一区二区在线观看| 爱情岛论坛vip永久入口| 久久免费高清| 人妻无码视频一区二区三区| 久久天堂精品| 亚洲黄色a v| 麻豆精品网站| 久久人人爽av| 国产激情91久久精品导航| 麻豆免费在线观看视频| 国产成人在线电影| 亚洲婷婷在线观看| av一区二区三区四区| japanese中文字幕| 国产精品久久久久久亚洲毛片| 精品国产aaa| 中文字幕一区二区不卡| 国产在线一卡二卡| 亚洲高清免费观看高清完整版在线观看| 熟女少妇a性色生活片毛片| 亚洲一区二区综合| 毛片基地在线观看| 欧美视频在线一区二区三区 | 国产女主播一区二区| 免费成人高清在线视频theav| 日韩av一区二区三区在线| 国产中文精品久高清在线不| 中国一级黄色录像| 欧美日韩a区| aⅴ在线免费观看| 久久av老司机精品网站导航| 久久久久久久久久久影视| 成人三级伦理片| 中文字幕5566| 亚洲青青青在线视频| 日韩乱码在线观看| 色吊一区二区三区| www.热久久| 亚洲人成啪啪网站| 亚洲综合图区| 欧洲亚洲女同hd| 未满十八勿进黄网站一区不卡| 成人看片视频| 综合伊思人在钱三区| 中文字幕一区二区三区在线乱码| 欧美88av| 狠狠干狠狠操视频| 99久久er热在这里只有精品66| 老头老太做爰xxx视频| 一区二区三区在线观看网站| aaa在线视频| 亚洲精品在线电影| 黄网站免费在线观看| 秋霞av国产精品一区| av日韩在线免费观看| 久久久久一区二区三区| 91久久久精品国产| 欧美成人一区二区在线观看| 国产一区二区三区久久悠悠色av| 538国产视频| 亚洲男人的天堂av| 久久人人爽人人爽人人片av免费| 日韩欧美成人一区| 亚洲欧美视频一区二区| 国产成人一区二区在线| 国产成人夜色高潮福利影视| 亚洲一区在线直播| 亚洲免费精品| 国产人妻黑人一区二区三区| 自拍偷拍亚洲综合| 国产免费一级视频| 亚洲精品短视频| 性欧美videos高清hd4k| 国产精品视频区1| 亚洲黄页在线观看| 久激情内射婷内射蜜桃| 国产一区二区精品在线观看| 国产伦理片在线观看| 亚洲午夜视频在线观看| 亚洲美女综合网| 超碰97人人做人人爱少妇| 成人精品动漫| 欧美日韩最好看的视频| 亚洲国产激情| 性囗交免费视频观看| 一区二区三区欧美日韩| 国产又爽又黄又嫩又猛又粗| 国产一区av在线| 成人黄色免费短视频| 国产精选一区二区| 国产欧美激情| 亚洲男人在线天堂| 午夜久久久久久久久久一区二区| 精品人妻无码一区二区| 欧美精品免费在线| 97精品久久| 男人添女荫道口女人有什么感觉| 国产不卡视频一区| 欧美日韩国产精品一区二区三区 | 在线能看的av网站| 国产精品素人视频| 中文字幕高清在线免费播放| 在线观看亚洲视频| yw.尤物在线精品视频| 亚洲精品成人a8198a| 另类欧美日韩国产在线| 成人无码精品1区2区3区免费看 | 欧美视频xxxx| 在线电影中文日韩| 欧美美女被草| 先锋影音男人资源| 成人小视频在线| av毛片在线免费观看| 在线精品播放av| 国产精品一区二区三区四区在线观看| 一本色道久久综合亚洲二区三区| 久草热8精品视频在线观看| 日本老熟俱乐部h0930| 精品免费国产二区三区| av漫画网站在线观看| 蜜桃传媒一区二区| 免费看精品久久片| 手机在线中文字幕| 亚洲精品国产综合久久| 久久天堂av| 老汉色影院首页| 成人禁用看黄a在线| 日本一区二区欧美| 中文字幕精品在线视频| 国产一区二区三区亚洲综合| 久操网在线观看| 国产网红主播福利一区二区| 99精品人妻无码专区在线视频区| 久久久久久久久亚洲| 国产成人一区| 国产精品视频分类| 亚洲成人免费观看| 97超碰国产一区二区三区|