As the demand needs to be done to replace some of the parameters at the gateway layer, hereby record what, in the following manner only for the GET request
import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * 过滤参数 * * @author * 2019-5-17 10:01 */ @Component public class ParametersFilter extends ZuulFilter { private static final Logger LOGGER = LoggerFactory.getLogger(ParametersFilter.class); private static final String KEY = "PARAMETER_FILTER_KEY"; @Override public String filterType() { return FilterConstants.PRE_TYPE; } @Override public int filterOrder() { return 9; } @Override public boolean shouldFilter() { return true; } @Override public Object run() { // 获取到request RequestContext ctx = RequestContext.getCurrentContext(); Request = ctx.getRequest the HttpServletRequest (); the try { // if knockdown // TODO // prevent error retry multiple conversions Boolean isConver = (Boolean) the request.getAttribute (KEY); IF (! = Null && isConver isConver) { null return; } String method request.getMethod = (); logger.info ( "will request replacement method} {, URL = {}", method, Request.getRequestURI ()); // GET method if ( "the GET" .equals (method.toUpperCase ())) { // Get parameter Map <String, String []> parameterMap = request.getParameterMap (); if (parameterMap == null) { return null; } //替换,业务逻辑 Map<String, List<String>> requestQueryParams = ctx.getRequestQueryParams(); if (requestQueryParams == null) { requestQueryParams = new HashMap<>(parameterMap.size() * 2); } for (String key : parameterMap.keySet()) { String[] values = parameterMap.get(key); List<String> valueList = new LinkedList<>(); for (String value : values) { valueList.add(change(value)); } requestQueryParams.put (Key, valueList); } // write parameters ctx.setRequestQueryParams (requestQueryParams); logger.info ( "complete translation, URL = {}", Request.getRequestURI ()); } } the catch (Exception E ) { LOGGER.error ( "parameter substitution exception: {}", E); } {the finally request.setAttribute (KEY, to true); } return null; } / ** * replacement * * @param data data * @return translation after the data * / Private Change String (String data) { // TODO return data; } }