91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在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

临高县| 竹溪县| 邯郸县| 茶陵县| 贡嘎县| 洞口县| 松滋市| 大连市| 十堰市| 巴彦县| 通江县| 黑龙江省| 舟曲县| 蓬溪县| 辽阳市| 蒲城县| 蓝田县| 军事| 额济纳旗| 祁东县| 文昌市| 红原县| 德昌县| 深圳市| 砀山县| 衢州市| 乡宁县| 成安县| 武胜县| 台州市| 尉犁县| 永川市| 寿阳县| 精河县| 齐齐哈尔市| 海口市| 陵川县| 蓬莱市| 鹤庆县| 历史| 如皋市|