Spring Cloud Gatewayの設定


🔨プロジェクトの作成

次の3つの依存性を追加して生成します.
server:
  port: 8000

eureka: #eureka 세팅은 현재 사용 안함
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka

spring:
  application:  #gateway service 이름름    
    name: apigateway-service
  cloud:
    gateway:  #gateway 설정
      routes:
        - id: first-service #gateway로 연결될 서비스 이름
          uri: http://127.0.0.1:8001/ #gateway로 연결될 서비스 uri
          predicates: #gateway로 연결될 서비스의 url 매핑
            - Path=/first-service/**
        - id: second-service
          uri: http://127.0.0.1:8002/
          predicates:
            - Path=/second-service/**
ymlファイルを設定したら、サーバーを実行してみます!

これは、正常に動作していることを確認し、isがTomcat(同期)ではなくNetty(非同期)で動作していることを確認します.isがNettyで実行され、ゲートウェイサーバが非同期で実行されていることを確認できます.
🔨サービス1の作成

3つの依存性を追加してサービスを開始します.
server:
  port: 8001
spring:
  application:
    name: first-service
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka
ユリカはすぐには見ないけど、とりあえず設定しておきました.
@RestController
public class HelloController {
    @GetMapping("hello")
    public String hello(){
        return "hello first service";
    }
}
次に、firstサービスに戻るための簡単なコントローラを作成します.

2番のサービスもそっくり!(ポート番号が違うだけでOK)

2番サーバーも同じようにしています.
今からゲートウェイにお願いしましょう!
👏ゲートウェイ・サービス名によるリクエスト

しかし404にエラーが発生した.これは、ゲートウェイがサーバの要求に従って貼り付けられるサービス区別のための事前パスを追加したためです.
例えば、/first-service/helloが要求される場合、最初のサービス要求/helloではなく、/first-service/helloである.
要求マッピングをコントローラに設定する
方法は簡単です.
@RestController
@RequestMapping("/first-service")
public class HelloController {
    @GetMapping("hello")
    public String hello(){
        return "hello first service";
    }
}
@RestController
@RequestMapping("/second-service")
public class HelloController {
    @GetMapping("hello")
    public String hello(){
        return "hello second service";
    }
}
サービスごとにマッピングされたprepathをそのまま貼り付けるだけです.


2つのサービスをそれぞれ呼び出し、正常な動作を確認します.彼をゲートウェイに呼びましょう


gatewayのみで2つのサービスが呼び出されると判断できます.