如何使用spring gateway微服務網關(基本用法)
本文介紹spring gateway的使用,包括配置文件的使用和調試跟蹤,讓大家了解spring gateway的基本用法。如果不了解什么是微服務網關,就先查查資料,網關相對來說是比較重要的微服務組件。
0、環(huán)境
- springboot 2.4.2
- springcloud gateway 3.0.1
- jdk 1.8
1、創(chuàng)建微服務網關
兩個服務,一個是網關,另一個是普通服務。網關用來轉發(fā)請求,普通服務用來處理對應的請求。項目結構如下圖:

下面咱們一起構造這個項目。先創(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:說明要跳轉的uri地址
- StripPrefix:指定要從源地址截取的個數,以“/“為分隔符。以地址欄輸入“http://localhost:8080/sample/service1/say/** ”為例,域名部分不計,那就是從sample/service1/say/** 計算,StripPrefix=2,表示從前截取兩個”/”,那么結構就是:/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";
}
}好了,一個帶網關的微服務就開發(fā)完成了。通關網關uri做一下測試。
http://localhost:9080/sample/service1/say/hello,看結果若是返回了hello表示正常。
3、排錯
在通過網關調用后端服務時,出現(xiàn)404,大部分情況都是手抖了,輸錯了uri,但是大部分同學又排查不細心,認為是gateway的問題,在這里我?guī)Т蠹覍憘€全局Filter,首先確認請求已經到了gateway,如果請求連gateway都沒到,那肯定是uri輸入錯誤。這個Filter寫在gateway模塊里,代碼如下:
@Component
public class MyGlobalFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
System.out.println("服務調用請求:" + exchange.getRequest().getURI());
return chain.filter(exchange).then(Mono.fromRunnable(() ->
System.out.println("服務調用返回了," + exchange.getResponse().getStatusCode())));
}
@Override
public int getOrder() {
return 0;
}
}效果如圖:

OK,一個簡單的網關就開發(fā)完成了。
到此這篇關于如何使用gateway作為微服務網關的文章就介紹到這了,更多相關gateway微服務網關內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java編程實現(xiàn)統(tǒng)計一個字符串中各個字符出現(xiàn)次數的方法
這篇文章主要介紹了Java編程實現(xiàn)統(tǒng)計一個字符串中各個字符出現(xiàn)次數的方法,涉及java針對字符串的遍歷、判斷、運算等相關操作技巧,需要的朋友可以參考下2017-12-12
JAVA 集合框架Map 接口的深度解析與實戰(zhàn)指南
文章主要介紹了Map接口及其常用實現(xiàn)類(HashMap、LinkedHashMap、TreeMap)的核心特性、底層原理和適用場景,詳細講解了HashMap的哈希表結構、鏈表和紅黑樹處理、線程不安全性及自定義Key注意事項,感興趣的朋友跟隨小編一起看看吧2026-04-04

