Skip to content

Commit

Permalink
增加拦截器适配器,优化网关接口
Browse files Browse the repository at this point in the history
  • Loading branch information
HaojunRen committed Jul 10, 2019
1 parent cac3062 commit 6426f80
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.server.ServerWebExchange;
Expand All @@ -27,7 +25,7 @@
import com.nepxion.discovery.plugin.strategy.gateway.constant.GatewayStrategyConstant;
import com.nepxion.discovery.plugin.strategy.tracer.StrategyTracer;

public abstract class AbstractGatewayStrategyRouteFilter implements GlobalFilter, Ordered, GatewayStrategyRouteFilter {
public abstract class AbstractGatewayStrategyRouteFilter implements GatewayStrategyRouteFilter {
@Autowired
private ConfigurableEnvironment environment;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
* @version 1.0
*/

public interface GatewayStrategyRouteFilter {
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;

public interface GatewayStrategyRouteFilter extends GlobalFilter, Ordered {
String getRouteVersion();

String getRouteRegion();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.nepxion.discovery.plugin.strategy.service.adapter;

/**
* <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 feign.RequestTemplate;

public interface FeignStrategyInterceptorAdapter {
void apply(RequestTemplate requestTemplate);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.nepxion.discovery.plugin.strategy.service.adapter;

/**
* <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 java.io.IOException;

import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpResponse;

public interface RestTemplateStrategyInterceptorAdapter {
ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,27 @@

import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.plugin.strategy.service.adapter.FeignStrategyInterceptorAdapter;
import com.nepxion.discovery.plugin.strategy.service.constant.ServiceStrategyConstant;

public class FeignStrategyInterceptor extends AbstractStrategyInterceptor implements RequestInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(FeignStrategyInterceptor.class);

@Autowired(required = false)
private List<FeignStrategyInterceptorAdapter> feignStrategyInterceptorAdapterList;

public FeignStrategyInterceptor(String requestHeaders) {
super(requestHeaders);

Expand All @@ -44,6 +51,12 @@ public void apply(RequestTemplate requestTemplate) {
applyOuterHeader(requestTemplate);

interceptOutputHeader(requestTemplate);

if (CollectionUtils.isNotEmpty(feignStrategyInterceptorAdapterList)) {
for (FeignStrategyInterceptorAdapter feignStrategyInterceptorAdapter : feignStrategyInterceptorAdapterList) {
feignStrategyInterceptorAdapter.apply(requestTemplate);
}
}
}

private void applyInnerHeader(RequestTemplate requestTemplate) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
Expand All @@ -27,11 +29,15 @@
import org.springframework.web.context.request.ServletRequestAttributes;

import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.plugin.strategy.service.adapter.RestTemplateStrategyInterceptorAdapter;
import com.nepxion.discovery.plugin.strategy.service.constant.ServiceStrategyConstant;

public class RestTemplateStrategyInterceptor extends AbstractStrategyInterceptor implements ClientHttpRequestInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(RestTemplateStrategyInterceptor.class);

@Autowired(required = false)
private List<RestTemplateStrategyInterceptorAdapter> restTemplateStrategyInterceptorAdapterList;

public RestTemplateStrategyInterceptor(String requestHeaders) {
super(requestHeaders);

Expand All @@ -49,6 +55,12 @@ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttp

interceptOutputHeader(request);

if (CollectionUtils.isNotEmpty(restTemplateStrategyInterceptorAdapterList)) {
for (RestTemplateStrategyInterceptorAdapter restTemplateStrategyInterceptorAdapter : restTemplateStrategyInterceptorAdapterList) {
restTemplateStrategyInterceptorAdapter.intercept(request, body, execution);
}
}

return execution.execute(request, body);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
* @version 1.0
*/

public interface ZuulStrategyRouteFilter {
import com.netflix.zuul.IZuulFilter;
import com.netflix.zuul.ZuulFilter;

public interface ZuulStrategyRouteFilter extends IZuulFilter, Comparable<ZuulFilter> {
String getRouteVersion();

String getRouteRegion();
Expand Down

0 comments on commit 6426f80

Please sign in to comment.