亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Spring Cloud中使用Zuul實現服務網關

發布時間:2021-05-27 17:59:45 來源:億速云 閱讀:149 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關怎么在Spring Cloud中使用Zuul實現服務網關,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。


Spring Cloud Zuul

 - 路由+過濾器
 - 核心是一系列的過濾器

怎么在Spring Cloud中使用Zuul實現服務網關

怎么在Spring Cloud中使用Zuul實現服務網關

Zuul路由配置

management:
  security:
    enabled: false // 權限設置
zuul: 
  routes:
    # myProduct:  // 這個名稱可以隨便填
    #   path: /myProduct/**
    #   serviceId: product
    #   sensitiveHeader: //敏感頭過濾
    # 簡潔寫法
    product: /myProduct/**
  ignored-patterns: 
    - /**/product/listForOrder // 不對外部訪問(-代表set集合)
查看所有的路由規則:localhost:port/application/routes
{
  /myProduct/**: "product",
  /config/**: "config",
  /product/**: "product",
}

Zuul配置的動態注入(也可以寫入啟動類中)

@Compoent
public class ZuulConfig{
  @ConfigurationProperties("zuul")
  @RefreshScope
  public ZuulProperties zuulProperties(){
    return new ZuulProperties();
  }
}

典型應用場景

前置過濾器

 - 限流
 - 鑒權
 - 參數校驗調整

后置過濾器

- 統計
- 日志

要想實現Filter,需要以下幾個步驟:

1、繼承ZuulFilter類,為了驗證Filter的特性,我們這里創建3個Filter

根據用戶名來過濾

package com.chhliu.springcloud.zuul; 
 
import javax.servlet.http.HttpServletRequest; 
 
import com.netflix.zuul.ZuulFilter; 
import com.netflix.zuul.context.RequestContext; 
 
public class AccessUserNameFilter extends ZuulFilter { 
  @Override 
  public Object run() { 
    RequestContext ctx = RequestContext.getCurrentContext(); 
    HttpServletRequest request = ctx.getRequest(); 
 
    System.out.println(String.format("%s AccessUserNameFilter request to %s", request.getMethod(), request.getRequestURL().toString())); 
 
    String username = request.getParameter("username");// 獲取請求的參數 
    if(null != username && username.equals("chhliu")) {// 如果請求的參數不為空,且值為chhliu時,則通過 
      ctx.setSendZuulResponse(true);// 對該請求進行路由 
      ctx.setResponseStatusCode(200); 
      ctx.set("isSuccess", true);// 設值,讓下一個Filter看到上一個Filter的狀態 
      return null; 
    }else{ 
      ctx.setSendZuulResponse(false);// 過濾該請求,不對其進行路由 
      ctx.setResponseStatusCode(401);// 返回錯誤碼 
      ctx.setResponseBody("{\"result\":\"username is not correct!\"}");// 返回錯誤內容 
      ctx.set("isSuccess", false); 
      return null; 
    } 
  } 
 
  @Override 
  public boolean shouldFilter() { 
    return true;// 是否執行該過濾器,此處為true,說明需要過濾 
  } 
 
  @Override 
  public int filterOrder() { 
    return 0;// 優先級為0,數字越大,優先級越低 
  } 
 
  @Override 
  public String filterType() { 
    return "pre";// 前置過濾器 
  } 
}

看完上述內容,你們對怎么在Spring Cloud中使用Zuul實現服務網關有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青浦区| 墨竹工卡县| 扎赉特旗| 长治市| 荆门市| 天等县| 北京市| 民丰县| 肃北| 涪陵区| 永泰县| 太仓市| 手机| 桑日县| 三明市| 鄯善县| 溧水县| 峨眉山市| 宿迁市| 扎囊县| 柏乡县| 资源县| 合作市| 浦东新区| 盖州市| 靖江市| 涟水县| 朝阳市| 寿阳县| 山阳县| 河池市| 禹城市| 二连浩特市| 慈溪市| 宽城| 贵阳市| 南昌县| SHOW| 融水| 北宁市| 重庆市|