[MSA Prepare] Spring Cloud Gateway

·2024년 6월 19일
0

MSA Prepare

목록 보기
18/21
post-thumbnail

What is?

  • Spring Cloud Gateway는 API Gateway를 제공
  • API들의 단일지점을 제공
  • API들에 공통된 작업을 수행할 수 있음(Filter)
  • 로깅, 모니터링 가능

USE

  • Eureka 서버를 같이 사용함

dependencies

dependencies {
	implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
	implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}

설정하기

  • application.properties
spring.application.name=api-gateway
server.port=8765

eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka

spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true
  • 이제 다음과 같이 localhost:8765/SERVICE-NAME을 통해서 접근이 가능하다.
  • spring.cloud.gateway.discovery.locator.lower-case-service-id 다음 설정을 통해 소문자의 경우도 접근이 가능하다.

좀 더 설정하기

  • ApiGatewayConfiguration.java
@Configuration
public class ApiGatewayConfiguration {

    @Bean
    public RouteLocator gatewayRouter(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(p -> p
                        .path("/get")
                        .filters(f -> f
                                .addRequestHeader("MyHeader", "MyURI")
                                .addRequestParameter("Param", "MyValue"))
                        .uri("http://httpbin.org:80"))
                .route(p -> p.path("/currency-exchange/**")
                        .uri("lb://currency-exchange"))
                .route(p -> p.path("/currency-conversion/**")
                        .uri("lb://currency-conversion"))
                .route(p -> p.path("/currency-conversion-feign/**")
                        .uri("lb://currency-conversion"))
                .route(p -> p.path("/currency-conversion-new/**")
                        .filters(f -> f.rewritePath(
                                "/currency-conversion-new/(?<segment>.*)",
                                "/currency-conversion-feign/${segment}"))
                        .uri("lb://currency-conversion"))
                .build();
    }
}
  • 다음과 같은 route를 통해 사용자의 요청을 라우팅 할 수있다.
  • filter를 적용하여 작업을 수행할 수 있다.
  • rewritePathsms 사용자의 요청을 변환한다.

profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보