From 04e65dde725a517139581d90c7b103ed200bb6fd Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 2 Mar 2017 13:33:51 -0700 Subject: [PATCH] Initial into/features. Stubs main docs with an outline. see gh-24 --- README.adoc | 10 +- docs/src/main/asciidoc/README.adoc | 7 +- docs/src/main/asciidoc/intro.adoc | 3 +- .../main/asciidoc/spring-cloud-gateway.adoc | 123 +++++++++++++++++- 4 files changed, 132 insertions(+), 11 deletions(-) diff --git a/README.adoc b/README.adoc index 856417db..448d0551 100644 --- a/README.adoc +++ b/README.adoc @@ -5,17 +5,21 @@ image::https://codecov.io/gh/spring-cloud-incubator/spring-cloud-gateway/branch/ image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud-incubator/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"] -TODO: write intro -This project provides +This project provides an API Gateway built on top of the Spring Ecosystem, including: Spring 5, Spring Boot 2 and Project Reactor. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as: security, monitoring/metrics, and resiliency. == Features -* TODO: document features * Java 8 * Spring Framework 5 * Spring Boot 2 * Dynamic routing +* Route matching built into Spring Handler Mapping +* Route matching on HTTP Request (Path, Method, Header, Host, etc...) +* Filters scoped to Matching Route +* Filters can modify downstream HTTP Request and HTTP Response (Add/Remove Headers, Add/Remove Parameters, Rewrite Path, Set Path, Hystrix, etc...) +* API or configuration driven +* Supports Spring Cloud `DiscoveryClient` for configuring Routes == Building diff --git a/docs/src/main/asciidoc/README.adoc b/docs/src/main/asciidoc/README.adoc index 2658c60c..251fe775 100644 --- a/docs/src/main/asciidoc/README.adoc +++ b/docs/src/main/asciidoc/README.adoc @@ -7,11 +7,16 @@ include::intro.adoc[] == Features -* TODO: document features * Java 8 * Spring Framework 5 * Spring Boot 2 * Dynamic routing +* Route matching built into Spring Handler Mapping +* Route matching on HTTP Request (Path, Method, Header, Host, etc...) +* Filters scoped to Matching Route +* Filters can modify downstream HTTP Request and HTTP Response (Add/Remove Headers, Add/Remove Parameters, Rewrite Path, Set Path, Hystrix, etc...) +* API or configuration driven +* Supports Spring Cloud `DiscoveryClient` for configuring Routes == Building diff --git a/docs/src/main/asciidoc/intro.adoc b/docs/src/main/asciidoc/intro.adoc index 8ce5a8e0..e66341e6 100644 --- a/docs/src/main/asciidoc/intro.adoc +++ b/docs/src/main/asciidoc/intro.adoc @@ -1,3 +1,2 @@ -TODO: write intro -This project provides +This project provides an API Gateway built on top of the Spring Ecosystem, including: Spring 5, Spring Boot 2 and Project Reactor. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as: security, monitoring/metrics, and resiliency. diff --git a/docs/src/main/asciidoc/spring-cloud-gateway.adoc b/docs/src/main/asciidoc/spring-cloud-gateway.adoc index 9bfd5510..b3f91fdc 100644 --- a/docs/src/main/asciidoc/spring-cloud-gateway.adoc +++ b/docs/src/main/asciidoc/spring-cloud-gateway.adoc @@ -11,15 +11,128 @@ include::intro.adoc[] -== TODO: Document Spring Cloud Gateway - -TODO: Do documentation - [[gateway-starter]] -=== How to Include Spring Cloud Gateway +== How to Include Spring Cloud Gateway To include Spring Cloud Gateway in your project use the starter with group `org.springframework.cloud` and artifact id `spring-cloud-starter-gateway`. See the http://projects.spring.io/spring-cloud/[Spring Cloud Project page] for details on setting up your build system with the current Spring Cloud Release Train. +Include the `@EnableGateway` annotation on any `@Configuration` class to enable Spring Cloud Gateway. +== Glossary + +TODO: document the meaning of terms to follow, like Route, Predicate and Filter + +== How It Works + +TODO: give an overview of how the gateway works with maybe a ascii diagram + +== Route Predicates + +Spring Cloud Gateway matches routes as part of the Spring WebFlux `HandlerMapping` infrastructure. Spring Cloud Gateway includes many built-in Route Predicates. All of these predicates match on different attributes of the HTTP request. + +=== After Route Predicate +TODO: document After Route Predicate + +=== Before Route Predicate +TODO: document Before Route Predicate + +=== Between Route Predicate +TODO: document Between Route Predicate + +=== Cookie Route Predicate +TODO: document Cookie Route Predicate + +=== Header Route Predicate +TODO: document Header Route Predicate + +=== Host Route Predicate +TODO: document Host Route Predicate + +=== Method Route Predicate +TODO: document Method Route Predicate + +=== Path Route Predicate +TODO: document Path Route Predicate + +=== Query Route Predicate +TODO: document Query Route Predicate + +=== RemoteAddr Route Predicate +TODO: document RemoteAddr Route Predicate + +== Route Filters + +Route filters allow the modification of the incoming HTTP request or outgoing HTTP response in some manner. Route filters are scoped to a particular route. Spring Cloud Gateway includes many built-in Route Filters. + +=== AddRequestHeader Route Filter +TODO: document AddRequestHeader Route Filter + +=== AddRequestParameter Route Filter +TODO: document AddRequestParameter Route Filter + +=== AddResponseHeader Route Filter +TODO: document AddResponseHeader Route Filter + +=== Hystrix Route Filter +TODO: document Hystrix Route Filter + +=== RedirectTo Route Filter +TODO: document RedirectTo Route Filter + +=== RemoveNonProxyHeaders Route Filter +TODO: document RemoveNonProxyHeaders Route Filter + +=== RemoveRequestHeader Route Filter +TODO: document RemoveRequestHeader Route Filter + +=== RemoveResponseHeader Route Filter +TODO: document RemoveResponseHeader Route Filter + +=== RewritePath Route Filter +TODO: document RewritePath Route Filter + +=== SecureHeaders Route Filter +TODO: document SecureHeaders Route Filter + +=== SetPath Route Filter +TODO: document SetPath Route Filter + +=== SetResponseHeader Route Filter +TODO: document SetResponseHeader Route Filter + +=== SetStatus Route Filter +TODO: document SetStatus Route Filter + +== Global Filters + +TODO: document Global Filters + +== Configuration + +TODO: document configuration via Spring Boot external properties + +== Actuator API + +TODO: document the `/gateway` actuator endpoint + +== Developer Guide + +TODO: overview of writing custom integrations + +=== Writing Custom Route Predicates + +TODO: document writing Custom Route Predicates + +=== Writing Custom Route Filters + +TODO: document writing Custom Route Filters + +=== Writing Custom Global Filters + +TODO: document writing Custom Global Filters + +=== Writing Custom Route Locators and Writers + +TODO: document writing Custom Route Locators and Writers