728x90
프로세스

- client -> SpringCloudGateway -> MicroService로 전달된다.
- SpringCloudGateWay 같은 경우 Predicate를 통해 분기 처리를 하고, 사전, 사후 필터 중 어떤 것을 동작시킬지 선택한다.
- 필터의 경우 .yml파일과 같은 Property 파일로 작성해도 되지만 Java Code로 작성할 수도 있다.
- 동작 과정
- 요청 -> SpringCloudGateWay -> Predicate -> PreFilter -> Service -> PostFilter
- SpringCloudGateway에서 Header를 추가할 수도 있다.
JAVA Code를 사용한 Route 등록
Java 코드를 통해 Predicate을 Route를 등록해 줄 수 있다.

- route를 람다 형식으로 등록할 수 있다.
- path : 어떠한 요청이 오게 되면을 정의 -> /first-service/**
- filter : 어떤 동작을 할지 -> 현재는 RequestHeader, ResponseHeader을 값을 추가해 주었다.
- uri : 어디로 이동할지 정의 -> http://localhost:8081
FirstService RequestHeader를 받는 메서드 추가(RequestHeader를 잘 받는지 확인하는 Test)

- @RequestHeader를 통해 Route에서 전달한 header가 잘 전달되었는지 log로 확인
SecondService RequestHeader를 받는 메서드 추가(RequestHeader를 잘 받는지 확인하는 Test)

- @RequestHeader 를 통해 Route에서 전달한 header가 잘 전달되었는지 log로 확인
Yml 파일을 통해 Filter를 추가하기
server:
port: 8000
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: apigateway-service
cloud:
gateway:
routes: #여러개 라우트 등록
- id: first-service
uri: http://localhost:8081/
predicates:
- Path=/first-service/**
filters:
- AddRequestHeader= first-request, first-request-header2
- AddResponseHeader= first-response, first-response-header2
- id: second-service
uri: http://localhost:8082/
predicates:
- Path=/second-service/** #해당 정보 모두가 URI 뒤에 붇게 된다. http://localhost:8082/second-service/**
filters:
- AddRequestHeader= second-request, second-request-header2
- AddResponseHeader= second-response, second-response-header2
- 추가할 Filter를 filters에 추가해 주면 된다.
- AddRequestHeader를 통해 Request에 Header를 추가해주거나 AddReponseHeader를 통해 Responsedp header를 추가해 줄 수 있다.
- JAVACode에서 했던 동작을 똑같이 YML을 통해서도 동작시킬 수 있다.
- PostMan을 통해 확인

728x90
'Spring Cloud로 개발하는 MSA > API Gateway Service' 카테고리의 다른 글
| Spring Cloud Gateway - Global Filter (0) | 2022.05.03 |
|---|---|
| Spring Cloud Gateway - Custom Filter 적용 (0) | 2022.05.03 |
| Spring Cloud Gateway - 프로젝트 생성 (0) | 2022.05.03 |
| Netflix Zuul - Filter 적용 (0) | 2022.05.03 |
| Netflix Zuul - 프로젝트 생성 (0) | 2022.05.03 |