Commit ce4cd43e by Nepxion

增加网关内做版本控制并路由的示例

parent 48ac8f2d
...@@ -29,6 +29,11 @@ public class DiscoveryApplicationGateway { ...@@ -29,6 +29,11 @@ public class DiscoveryApplicationGateway {
} }
/*@Bean /*@Bean
public MyGatewayFilter myGatewayFilter() {
return new MyGatewayFilter();
}*/
/*@Bean
public RouteLocator routeLocator(RouteLocatorBuilder builder) { public RouteLocator routeLocator(RouteLocatorBuilder builder) {
return builder return builder
.routes() .routes()
......
package com.nepxion.discovery.plugin.example.gateway.impl;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import reactor.core.publisher.Mono;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.server.ServerWebExchange;
public class MyGatewayFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest newRequest = exchange.getRequest().mutate().header("version", "{\"discovery-springcloud-example-a\":\"1.0\", \"discovery-springcloud-example-b\":\"1.0\", \"discovery-springcloud-example-c\":\"1.0;1.2\"}").build();
ServerWebExchange newExchange = exchange.mutate().request(newRequest).build();
return chain.filter(newExchange);
}
@Override
public int getOrder() {
return -200;
}
}
\ No newline at end of file
...@@ -29,4 +29,9 @@ public class DiscoveryApplicationZuul { ...@@ -29,4 +29,9 @@ public class DiscoveryApplicationZuul {
public MyDiscoveryEnabledStrategy myDiscoveryEnabledStrategy() { public MyDiscoveryEnabledStrategy myDiscoveryEnabledStrategy() {
return new MyDiscoveryEnabledStrategy(); return new MyDiscoveryEnabledStrategy();
} }
/*@Bean
public MyZuulFilter myZuulFilter() {
return new MyZuulFilter();
}*/
} }
\ No newline at end of file
package com.nepxion.discovery.plugin.example.zuul.impl;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
public class MyZuulFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext context = RequestContext.getCurrentContext();
context.addZuulRequestHeader("version", "{\"discovery-springcloud-example-a\":\"1.0\", \"discovery-springcloud-example-b\":\"1.0\", \"discovery-springcloud-example-c\":\"1.0;1.2\"}");
return null;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment