如何使用spring gateway微服務網(wǎng)關(基本用法)
本文介紹spring gateway的使用,包括配置文件的使用和調(diào)試跟蹤,讓大家了解spring gateway的基本用法。如果不了解什么是微服務網(wǎng)關,就先查查資料,網(wǎng)關相對來說是比較重要的微服務組件。
0、環(huán)境
- springboot 2.4.2
- springcloud gateway 3.0.1
- jdk 1.8
1、創(chuàng)建微服務網(wǎng)關
兩個服務,一個是網(wǎng)關,另一個是普通服務。網(wǎng)關用來轉(zhuǎn)發(fā)請求,普通服務用來處理對應的請求。項目結(jié)構如下圖:
下面咱們一起構造這個項目。先創(chuàng)建gateway項目,就是普通maven項目。
1.1、添加依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>3.0.1</version> </dependency>
1.2、添加配置文件
創(chuàng)建application.yml文件,并添加如下配置:
server: port: 9080 spring: application: name: gateway-sample cloud: gateway: discovery: locator: enabled: true routes: - id: gateway-02 uri: http://localhost:9081 #匹配后提供服務的路由地址 predicates: - Path=/sample/service1/say/** # 斷言,路徑相匹配的進行路由 filters: - StripPrefix=2
說明:
- uri:說明要跳轉(zhuǎn)的uri地址
- StripPrefix:指定要從源地址截取的個數(shù),以“/“為分隔符。以地址欄輸入“http://localhost:8080/sample/service1/say/** ”為例,域名部分不計,那就是從sample/service1/say/** 計算,StripPrefix=2,表示從前截取兩個”/”,那么結(jié)構就是:/say/**,你的服務必須對應這個uri,否則會出現(xiàn)404。
- id:隨便寫,保持和其他服務不同就是了
1.3、啟動
springboot啟動類就不多說了吧,啟動只要沒有出錯就算是正常。這里唯一要注意的是pom文件里不能引入springboot web依賴,一旦引入啟動時就報錯。大家注意觀察,我們啟動gateway時,是netty而不是tomcat。
2、service1 服務編寫
service1服務屬于普通服務,按照普通springboot服務創(chuàng)建就行。這里注意端口保持和gateway不一樣,我這里用9081。注意pom.xml要引入springboot web的依賴。在這里貼出controller的代碼:
@RestController @RequestMapping("/say") public class SomethingToSay { @GetMapping("/hello") public String sayHello() { return "hello"; } @GetMapping("/hi") public String sayHi() { return "hi"; } @GetMapping("/ohh") public String sayOhh() { return "ohh"; } }
好了,一個帶網(wǎng)關的微服務就開發(fā)完成了。通關網(wǎng)關uri做一下測試。
http://localhost:9080/sample/service1/say/hello,看結(jié)果若是返回了hello表示正常。
3、排錯
在通過網(wǎng)關調(diào)用后端服務時,出現(xiàn)404,大部分情況都是手抖了,輸錯了uri,但是大部分同學又排查不細心,認為是gateway的問題,在這里我?guī)Т蠹覍憘€全局Filter,首先確認請求已經(jīng)到了gateway,如果請求連gateway都沒到,那肯定是uri輸入錯誤。這個Filter寫在gateway模塊里,代碼如下:
@Component public class MyGlobalFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("服務調(diào)用請求:" + exchange.getRequest().getURI()); return chain.filter(exchange).then(Mono.fromRunnable(() -> System.out.println("服務調(diào)用返回了," + exchange.getResponse().getStatusCode()))); } @Override public int getOrder() { return 0; } }
效果如圖:
OK,一個簡單的網(wǎng)關就開發(fā)完成了。
到此這篇關于如何使用gateway作為微服務網(wǎng)關的文章就介紹到這了,更多相關gateway微服務網(wǎng)關內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot整合easy-es實現(xiàn)數(shù)據(jù)的增刪改查的示例代碼
Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開發(fā)框架,本文主要介紹了springboot整合easy-es實現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-03-03Spring?AI?+?混元帶你實現(xiàn)企業(yè)級穩(wěn)定可部署的AI業(yè)務智能體
我們深入探討了Spring?AI在智能體構建中的實際應用,特別是在企業(yè)環(huán)境中的價值與效能,通過逐步實現(xiàn)一個本地部署的智能體解決方案,我們不僅展示了Spring?AI的靈活性與易用性,還強調(diào)了它在推動AI技術與業(yè)務深度融合方面的潛力,感興趣的朋友一起看看吧2024-11-11SpringBoot快速設置攔截器并實現(xiàn)權限驗證的方法
本篇文章主要介紹了SpringBoot快速設置攔截器并實現(xiàn)權限驗證的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01Java語言實現(xiàn)簡單FTP軟件 FTP協(xié)議分析(1)
這篇文章主要介紹了Java語言實現(xiàn)簡單FTP軟件的第一篇,針對FTP協(xié)議進行分析,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03JDK生成WebService客戶端代碼以及調(diào)用方式
WebService 是一種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術,下面這篇文章主要給大家介紹了關于JDK生成WebService客戶端代碼以及調(diào)用方式的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-08-08Java Jackson之ObjectMapper常用用法總結(jié)
這篇文章主要給大家介紹了關于Java Jackson之ObjectMapper常用用法的相關資料,ObjectMapper是一個Java庫,用于將JSON字符串轉(zhuǎn)換為Java對象或?qū)ava對象轉(zhuǎn)換為JSON字符串,需要的朋友可以參考下2024-01-01springboot報錯Invalid?bound?statement?(not?found)的解決
本文主要介紹了springboot報錯Invalid?bound?statement?(not?found)的解決,遇到這種問題通常是沒有配置好配置文件,下面就來具體介紹一下解決方法,感興趣的可以了解一下2025-03-03