欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用spring gateway微服務(wù)網(wǎng)關(guān)(基本用法)

 更新時(shí)間:2024年08月28日 11:20:57   作者:stars  
本文介紹spring gateway的使用,包括配置文件的使用和調(diào)試跟蹤,讓大家了解spring gateway的基本用法,感興趣的朋友跟隨小編一起看看吧

本文介紹spring gateway的使用,包括配置文件的使用和調(diào)試跟蹤,讓大家了解spring gateway的基本用法。如果不了解什么是微服務(wù)網(wǎng)關(guān),就先查查資料,網(wǎng)關(guān)相對(duì)來說是比較重要的微服務(wù)組件。

0、環(huán)境

  • springboot 2.4.2
  • springcloud gateway 3.0.1
  • jdk 1.8

1、創(chuàng)建微服務(wù)網(wǎng)關(guān)

兩個(gè)服務(wù),一個(gè)是網(wǎng)關(guān),另一個(gè)是普通服務(wù)。網(wǎng)關(guān)用來轉(zhuǎn)發(fā)請(qǐng)求,普通服務(wù)用來處理對(duì)應(yīng)的請(qǐng)求。項(xiàng)目結(jié)構(gòu)如下圖:

下面咱們一起構(gòu)造這個(gè)項(xiàng)目。先創(chuàng)建gateway項(xiàng)目,就是普通maven項(xiàng)目。

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          #匹配后提供服務(wù)的路由地址
          predicates:
            - Path=/sample/service1/say/**         # 斷言,路徑相匹配的進(jìn)行路由
          filters:
            - StripPrefix=2

說明:

  • uri:說明要跳轉(zhuǎn)的uri地址
  • StripPrefix:指定要從源地址截取的個(gè)數(shù),以“/“為分隔符。以地址欄輸入“http://localhost:8080/sample/service1/say/** ”為例,域名部分不計(jì),那就是從sample/service1/say/** 計(jì)算,StripPrefix=2,表示從前截取兩個(gè)”/”,那么結(jié)構(gòu)就是:/say/**,你的服務(wù)必須對(duì)應(yīng)這個(gè)uri,否則會(huì)出現(xiàn)404。
  • id:隨便寫,保持和其他服務(wù)不同就是了

1.3、啟動(dòng)

springboot啟動(dòng)類就不多說了吧,啟動(dòng)只要沒有出錯(cuò)就算是正常。這里唯一要注意的是pom文件里不能引入springboot web依賴,一旦引入啟動(dòng)時(shí)就報(bào)錯(cuò)。大家注意觀察,我們啟動(dòng)gateway時(shí),是netty而不是tomcat。

2、service1 服務(wù)編寫

service1服務(wù)屬于普通服務(wù),按照普通springboot服務(wù)創(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";
    }
}

好了,一個(gè)帶網(wǎng)關(guān)的微服務(wù)就開發(fā)完成了。通關(guān)網(wǎng)關(guān)uri做一下測(cè)試。
http://localhost:9080/sample/service1/say/hello,看結(jié)果若是返回了hello表示正常。

3、排錯(cuò)

在通過網(wǎng)關(guān)調(diào)用后端服務(wù)時(shí),出現(xiàn)404,大部分情況都是手抖了,輸錯(cuò)了uri,但是大部分同學(xué)又排查不細(xì)心,認(rèn)為是gateway的問題,在這里我?guī)Т蠹覍憘€(gè)全局Filter,首先確認(rèn)請(qǐng)求已經(jīng)到了gateway,如果請(qǐng)求連gateway都沒到,那肯定是uri輸入錯(cuò)誤。這個(gè)Filter寫在gateway模塊里,代碼如下:

@Component
public class MyGlobalFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println("服務(wù)調(diào)用請(qǐng)求:" + exchange.getRequest().getURI());
        return chain.filter(exchange).then(Mono.fromRunnable(() ->
                System.out.println("服務(wù)調(diào)用返回了," + exchange.getResponse().getStatusCode())));
    }
    @Override
    public int getOrder() {
        return 0;
    }
}

效果如圖:

OK,一個(gè)簡(jiǎn)單的網(wǎng)關(guān)就開發(fā)完成了。

到此這篇關(guān)于如何使用gateway作為微服務(wù)網(wǎng)關(guān)的文章就介紹到這了,更多相關(guān)gateway微服務(wù)網(wǎng)關(guān)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開發(fā)框架,本文主要介紹了springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級(jí)穩(wěn)定可部署的AI業(yè)務(wù)智能體

    Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級(jí)穩(wěn)定可部署的AI業(yè)務(wù)智能體

    我們深入探討了Spring?AI在智能體構(gòu)建中的實(shí)際應(yīng)用,特別是在企業(yè)環(huán)境中的價(jià)值與效能,通過逐步實(shí)現(xiàn)一個(gè)本地部署的智能體解決方案,我們不僅展示了Spring?AI的靈活性與易用性,還強(qiáng)調(diào)了它在推動(dòng)AI技術(shù)與業(yè)務(wù)深度融合方面的潛力,感興趣的朋友一起看看吧
    2024-11-11
  • SpringBoot快速設(shè)置攔截器并實(shí)現(xiàn)權(quán)限驗(yàn)證的方法

    SpringBoot快速設(shè)置攔截器并實(shí)現(xiàn)權(quán)限驗(yàn)證的方法

    本篇文章主要介紹了SpringBoot快速設(shè)置攔截器并實(shí)現(xiàn)權(quán)限驗(yàn)證的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring RestTemplate的使用與踩坑

    Spring RestTemplate的使用與踩坑

    RestTemplate是一個(gè)執(zhí)行HTTP請(qǐng)求的同步阻塞式工具類,它僅僅只是在HTTP客戶端庫(kù)基礎(chǔ)上,封裝了更加簡(jiǎn)單易用的模板方法API,方便程序員利用已提供的模板方法發(fā)起網(wǎng)絡(luò)請(qǐng)求和處理,能很大程度上提升我們的開發(fā)效率
    2023-02-02
  • Java語言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP協(xié)議分析(1)

    Java語言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP協(xié)議分析(1)

    這篇文章主要介紹了Java語言實(shí)現(xiàn)簡(jiǎn)單FTP軟件的第一篇,針對(duì)FTP協(xié)議進(jìn)行分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • JDK生成WebService客戶端代碼以及調(diào)用方式

    JDK生成WebService客戶端代碼以及調(diào)用方式

    WebService 是一種跨編程語言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù),下面這篇文章主要給大家介紹了關(guān)于JDK生成WebService客戶端代碼以及調(diào)用方式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Java Jackson之ObjectMapper常用用法總結(jié)

    Java Jackson之ObjectMapper常用用法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java Jackson之ObjectMapper常用用法的相關(guān)資料,ObjectMapper是一個(gè)Java庫(kù),用于將JSON字符串轉(zhuǎn)換為Java對(duì)象或?qū)ava對(duì)象轉(zhuǎn)換為JSON字符串,需要的朋友可以參考下
    2024-01-01
  • java8中的lambda表達(dá)式,看這篇絕對(duì)夠

    java8中的lambda表達(dá)式,看這篇絕對(duì)夠

    這篇文章主要介紹了java8中的lambda表達(dá)式,看這篇絕對(duì)夠!具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java抽象類和抽象方法定義與用法實(shí)例詳解

    Java抽象類和抽象方法定義與用法實(shí)例詳解

    這篇文章主要介紹了Java抽象類和抽象方法定義與用法,結(jié)合實(shí)例形式詳細(xì)分析了Java抽象類和抽象方法相關(guān)原理、定義、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • springboot報(bào)錯(cuò)Invalid?bound?statement?(not?found)的解決

    springboot報(bào)錯(cuò)Invalid?bound?statement?(not?found)的解決

    本文主要介紹了springboot報(bào)錯(cuò)Invalid?bound?statement?(not?found)的解決,遇到這種問題通常是沒有配置好配置文件,下面就來具體介紹一下解決方法,感興趣的可以了解一下
    2025-03-03

最新評(píng)論