사용자 도구

사이트 도구


springframework:cloud_gateway

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:cloud_gateway [2019/02/28 21:52]
kwon37xi
springframework:cloud_gateway [2020/09/18 10:14]
kwon37xi
줄 1: 줄 1:
 ====== Spring Cloud Gateway ====== ====== Spring Cloud Gateway ======
   * [[https://spring.io/projects/spring-cloud-gateway|Spring Cloud Gateway]]   * [[https://spring.io/projects/spring-cloud-gateway|Spring Cloud Gateway]]
-  * Spring MVC / Reactor 기반의 API Gateway. +  * Spring Boot / WebFlux / Reactor 기반의 Non Blocking API Gateway. 
-  * [[java:zuul|Zuul - Edge Service]] 에 대응 +  * [[java:zuul|Zuul - Edge Service]] 에 대응. Java/Spring 기반 개발자들에게는 Spring Cloud Gateway 가 더 나아 보인다.
-  * Non Blocking+
   * Java Code 기반 Routing 설정 가능   * Java Code 기반 Routing 설정 가능
 +
 +====== Routings ======
 +  * ''localhost:8080/get'' -> ''http://httpbin.org:80/get'' 으로 요청 라우팅<code java>
 +.route(p -> p.path("/get")
 +  .filters(f -> f.addRequestHeader("Hello", "World"))
 +  .uri("http://httpbin.org:80"))
 + </code>
 +  * URL을 중간에 바꿔치기해서 라우팅 ''localhost:8080/api/v1/get'' -> ''http://httpbin.org:80/get'' 으로 요청 라우팅<code java>
 +.route(p -> p.path("/api/v1/get")
 +  .filters(f -> f.setPath("/get"))
 +  .uri("http://httpbin.org:80"))
 +</code>
 +  * PATH 앞에 떼어내기 ''localhost:8080/api/httpbin/get'' -> ''http://httpbin.org:80/get''<code java>
 +route("httpbin", p -> p.path("/api/httpbin/**")
 +   .filters(f -> f.stripPrefix(2))
 + .uri("http://httpbin.org:80))
 +// '/api' - 1, '/httpbin' - 2 해서 2 path 건너뛰기
 +</code>
 +  * PATH Variable 정규표현식 ''localhost:8080/api/httpbin/get/123'' -> ''http://httpbin.org:80/get/123'', 단 ''/get/abc'' 는 거부됨<code java>
 +route("httpbin", p -> p.path("/api/httpbin/get/{num:[0-9]+}")
 +   .filters(f -> f.stripPrefix(2))
 + .uri("http://httpbin.org:80))
 +</code>
 +  * Path Rewrite : [[https://stackoverflow.com/questions/48632054/spring-cloud-gateway-2-0-forward-path-variable|java - Spring Cloud Gateway 2.0 forward path variable - Stack Overflow]]<code java>
 +
 +route("userById", t -> t.path("/users/**")
 +  .filters(rw -> rw.rewritePath("/users/(?<segment>.*)", "/users/${segment}"))
 +  .uri("http://localhost:8080/users/"))
 +</code>
 +
 +====== Actuator ======
 +''implementation 'org.springframework.boot:spring-boot-starter-actuator''' 의존성 추가
 +
 +<code>
 +management.endpoint.gateway.enabled=true # default value
 +management.endpoints.web.exposure.include=gateway
 +</code>
 +
 +===== 참조 =====
 +  * [[https://spring.io/guides/gs/gateway/|Getting Started · Building a Gateway]]
 +  * [[https://github.com/spring-cloud-samples/spring-cloud-gateway-sample|Spring Cloud Gateway Sample]]
 +  * [[https://www.baeldung.com/spring-cloud-gateway|Exploring the New Spring Cloud Gateway | Baeldung]]
 +  * [[https://aboullaite.me/spring-cloud-gateway/|A look into Spring Cloud Gateway!]]
 +  * [[https://dzone.com/articles/spring-cloud-gateway-configuring-a-simple-route|Spring Cloud Gateway - Configuring a Simple Route - DZone Microservices]]
 +  * [[https://springboot.cloud/26|Spring Cloud Gateway 2.1.0RELEASE 레퍼런스]]
 +  * [[https://www.baeldung.com/spring-cloud-gateway-routing-predicate-factories|Spring Cloud Gateway Routing Predicate Factories | Baeldung]]
 +  * [[https://www.popit.kr/spring-cloud-gateway/|Spring Cloud Gateway | Popit]]
springframework/cloud_gateway.txt · 마지막으로 수정됨: 2020/09/18 10:14 저자 kwon37xi