anchor.diff:  ----
   
   This will prefix `/mypath` to the path of all matching requests. So a request to `/hello`, would be sent to `/mypath/hello`.
  +
  +=== RequestRateLimiter WebFilter Factory
  +
  +The RequestRateLimiter WebFilter Factory takes three parameters: `replenishRate`, `burstCapacity` & `keyResolverName`.
  +
  +`replenishRate` is how many requests per second do you want a user to be allowed to do.
  +
  +`burstCapacity` TODO: document burst capacity
  +
  +`keyResolverName` is the name of a bean that implements the `KeyResolver` interface.
  +
  +.KeyResolver.java
  +[source,java]
  +----
  +public interface KeyResolver {
  +	Mono<String> resolve(ServerWebExchange exchange);
  +}
  +----
  +
  +The `KeyResolver` interface allows pluggable strategies to derive the key for limiting requests. In future milestones, there will be some `KeyResolver` implementations.
  +
  +The redis implementation is based off of work done at https://stripe.com/blog/rate-limiters[Stripe]. It requires the use of the `spring-boot-starter-data-redis-reactive` Spring Boot starter.
  +
  +
  +.application.yml
  +[source,yaml]
  +----
  +spring:
  +  cloud:
  +    gateway:
  +      routes:
  +      # =====================================
  +      - id: requestratelimiter_route
  +        uri: http://example.org
  +        filters:
  +        - RequestRateLimiter=10, 20, userKeyResolver
  +----
  +
  +.Config.java
  +[source,java]
  +----
  +@Bean
  +KeyResolver userKeyResolver() {
  +    return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("user"));
  +}
  +----
  +
  +This defines a request rate limit of 10 per user. The `KeyResolver` is a simple one that gets the `user` request parameter (note: this is not recommended for production).
   
   === RedirectTo WebFilter Factory
   The RedirectTo WebFilter Factory takes a `status` and a `url` parameter. The status should be a 300 series redirect http code, such as 301. The url should be a valid url. This will be the value of the `Location` header.
  
positive.code: ----
  
  For some usages of the gateway, properties will be adequate, but some production use cases will benefit from loading configuration from an external source, such as a database. Future milestone versions will have `RouteDefinitionLocator` implementations based off of Spring Data Repositories such as: Redis, MongoDB and Cassandra.
  
  == Actuator API
  
  
negative.code: 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.
  
  If you include the starter, but, for some reason, you do not want the gateway to be enabled, set `spring.cloud.gateway.enabled=false`.
  
  == Glossary
  
  * Route: Route the basic building block of the gateway. It is defined by an ID, a destination URI, a collection of predicates and a collection of filters. A route is matched if aggregate predicate is true.
  * Predicate: This is a http://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html[Java 8 Function Predicate]. The input type is a http://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/web/server/ServerWebExchange.html[Spring Framework `ServerWebExchange`]. This allows developers to match on anything from the HTTP request, such as headers or parameters.
  * Filter: These are instances http://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/web/server/WebFilter.html[Spring Framework `WebFilter`] constructed in with a specific factory. Here, requests and responses can be modified before or after sending the downstream request.
  
  [[gateway-how-it-works]]
  == How It Works
  