zuul網關 在過濾器返回參數中文亂碼

zuul網關配置文件:

    中文亂碼在配置文件中配置java

  ##處理中文亂碼spring

spring:
      http:
        encoding:
          charset: UTF-8
          enabled: true
          force: trueapache

###註冊 中心
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8100/eureka/
server:
  port: 80
###網關名稱
spring:
  application:
    name: service-zuul
    ##處理中文亂碼
  http:
    encoding:
      charset: UTF-8
      enabled: true
      force: true
### 配置網關反向代理
zuul:
  routes:
    ###本身命名
    api-member:
      ### 以 /api-member/訪問轉發到會員服務
      path: /api-member/**
      ##會員在註冊中心的別名
      serviceId: member
    api-order:
      ### 以 /api-order/訪問轉發到訂單服務
      path: /api-order/**
      ##訂單在註冊中心的別名
      serviceId: order

過濾器代碼

    filterType返回類型

  • PRE: 這種過濾器在請求被路由以前調用。咱們可利用這種過濾器實現身份驗證、在集羣中選擇請求的微服務、記錄調試信息等。
  • ROUTING:這種過濾器將請求路由到微服務。這種過濾器用於構建發送給微服務的請求,並使用Apache HttpClient或Netfilx Ribbon請求微服務。
  • POST:這種過濾器在路由到微服務之後執行。這種過濾器可用來爲響應添加標準的HTTP Header、收集統計信息和指標、將響應從微服務發送給客戶端等。
  • ERROR:在其餘階段發生錯誤時執行該過濾器。
import com.netflix.discovery.util.StringUtil;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class TokeFilter extends ZuulFilter {
       /**
     * pre:能夠在請求被路由以前調用
     * route:在路由請求時候被調用
     * post:在route和error過濾器以後被調用
     * error:處理請求時發生錯誤時被調用
     * 
     */
   @Override
    public String filterType() {
        return "pre";
    }
//過濾器執行順序
    @Override
    public int filterOrder() {
        return 0;
    }
//是否開啓過濾器
    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {
//獲取上下文
        RequestContext context=RequestContext.getCurrentContext();
       HttpServletRequest request= context.getRequest();
       String username=request.getParameter("userName");

        if(StringUtils.isEmpty(username)){
           context.setSendZuulResponse(false);
           context.setResponseBody("沒有登陸");
           return null;
       }
        return null;
    }
}

啓動類

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class ZuulStar {

    public static void main(String[] args) {
        SpringApplication.run(ZuulStar.class,args);
    }
相關文章
相關標籤/搜索