@SpringBootApplication
@RestController
public class Scg1Application {
@GetMapping("/user/test")
public String user() {
return "user";
}
public static void main(String[] args) {
SpringApplication.run(Scg1Application.class, args);
}
}
spring:
cloud:
gateway:
routes:
- id: user-api
uri: http://localhost:8081/
predicates:
- Path=/user/**
스프링부트에 scg(spring cloud gateway)를 이용해서 gateway구성을 해보자
springboot -> gateway만 선택
gateway를 구성하는 방법은 2가지가 있는데
- java code로 작성
- application.properties(application.yaml) 파일에 작성
application.properties(application.yaml) 파일에 작성하는 방법을 알아보도록 하겠습니다.
spring:
cloud:
gateway:
routes:
- id: user-api
uri: http://localhost:8081/
predicates:
- Path=/user/**
localhsot:8081이라는 서버가 있다고 하면, /user/** path로 들어왔을때 요청을 localhost:8081로 보낼수 있습니다.
@SpringBootApplication
@RestController
public class ScgApplication {
@GetMapping
public String index() {
return "home";
}
public static void main(String[] args) {
SpringApplication.run(ScgApplication.class, args);
}
}
메인코드가 위와 같을때
localhost:8080으로 접속시 -> home이라는 결과를 리턴하고 8081 서버에 구성이 아래와 같을때
@SpringBootApplication
@RestController
public class Scg1Application {
@GetMapping("/user/test")
public String user() {
return "user";
}
public static void main(String[] args) {
SpringApplication.run(Scg1Application.class, args);
}
}
localhost:8080/user/test 로 접속시
user라는 결과를 리턴하는것을 볼수 있습니다.
아래와 같이 java코드로 좀더 디테일하게 설정할수가 있습니다.
@SpringBootApplication
public class DemogatewayApplication {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("path_route", r -> r.path("/get")
.uri("http://httpbin.org"))
.route("host_route", r -> r.host("*.myhost.org")
.uri("http://httpbin.org"))
.route("rewrite_route", r -> r.host("*.rewrite.org")
.filters(f -> f.rewritePath("/foo/(?<segment>.*)", "/${segment}"))
.uri("http://httpbin.org"))
.route("hystrix_route", r -> r.host("*.hystrix.org")
.filters(f -> f.hystrix(c -> c.setName("slowcmd")))
.uri("http://httpbin.org"))
.route("hystrix_fallback_route", r -> r.host("*.hystrixfallback.org")
.filters(f -> f.hystrix(c -> c.setName("slowcmd").setFallbackUri("forward:/hystrixfallback")))
.uri("http://httpbin.org"))
.route("limit_route", r -> r
.host("*.limited.org").and().path("/anything/**")
.filters(f -> f.requestRateLimiter(c -> c.setRateLimiter(redisRateLimiter())))
.uri("http://httpbin.org"))
.build();
}
}
자세한 내용은 아래 공식사이트에서 더 확인이 가능합니다.
https://spring.io/projects/spring-cloud-gateway
다음 포스팅에서는 로그를 통해 어떻게 데이터들이 전달되는지 확인해보겠습니다.
'Programming > Springboot' 카테고리의 다른 글
springboot + kotlin + zull proxy 예제 (0) | 2020.12.29 |
---|---|
[springboot/jpa] jpa crud example 2 (0) | 2020.10.26 |
[springboot/jpa] jpa crud example 1 (0) | 2020.10.26 |
[springboot] junit4 + controller test [mockMvc] (0) | 2020.03.27 |
[springboot] @autowired 안에서 @value로 호출한 값 못 읽을때 (0) | 2019.03.13 |