大廠都在用的管理型網(wǎng)關(guān)解密:Fizz管理后臺(tái)使用教程

Fizz管理后臺(tái)使用教程

前言

Fizz Gateway 是一個(gè)基于 Java異步框架WebFlux開發(fā)的微服務(wù)網(wǎng)關(guān),能夠快速幫助企業(yè)進(jìn)行API服務(wù)治理、減少中間層膠水代碼以及降低編碼投入踏枣、提高 API 服務(wù)的穩(wěn)定性和安全性孽糖。Fizz管理后臺(tái)是Fizz Gateway的配套系統(tǒng),基于Java苹威、Vue開發(fā)昆咽,提供友好的圖形化配置界面,支撐Fizz Gateway的熱服務(wù)編排牙甫、自動(dòng)授權(quán)選擇掷酗、線上服務(wù)腳本編碼、在線測(cè)試窟哺、高性能路由泻轰、API審核管理、自定義插件等功能的配置使用且轨。本篇文章介紹Fizz管理后臺(tái)的使用浮声。

功能

Fizz管理后臺(tái)包含如下功能:

  • 網(wǎng)關(guān)管理
    • 網(wǎng)關(guān)分組:對(duì)Fizz網(wǎng)關(guān)集群內(nèi)的機(jī)器進(jìn)行邏輯上的分組,針對(duì)不同的分組可配置不同的路由策略旋奢。
    • 插件管理:維護(hù)插件元數(shù)據(jù)泳挥,定義路由級(jí)別的自定義屬性、插件級(jí)別的自定義配置信息至朗。
    • appID管理:配置應(yīng)用鑒權(quán)信息屉符,可配置是否啟用簽名、是否啟用IP白名單,AppID級(jí)別的自定義配置供自定義插件使用矗钟。
    • 路由管理:配置服務(wù)或API路由規(guī)則唆香,支持按請(qǐng)求路徑轉(zhuǎn)發(fā)、轉(zhuǎn)發(fā)到指定后端服務(wù)兩種轉(zhuǎn)發(fā)規(guī)則吨艇,支持插件配置躬它。
    • 接口統(tǒng)計(jì):Fizz網(wǎng)關(guān)接口訪問統(tǒng)計(jì)功能,以圖表的形式展示指定時(shí)間段內(nèi)每日的接口總數(shù)秸应、訪問次數(shù)虑凛,可查看接口的歷史訪問總次數(shù)以及最近請(qǐng)求時(shí)間。
  • 服務(wù)編排
    • 服務(wù)管理:聚合接口歸屬于服務(wù)软啼,服務(wù)通過該功能維護(hù)桑谍,創(chuàng)建人自動(dòng)獲得服務(wù)權(quán)限,服務(wù)權(quán)限可分配祸挪,擁有權(quán)限的用戶才能操作對(duì)應(yīng)的接口列表锣披。
    • 接口列表:基于現(xiàn)有的業(yè)務(wù)微服務(wù)使用在線配置的方式快速的生成一個(gè)聚合接口,同時(shí)提供在線測(cè)試功能贿条,發(fā)布?xì)v史版本查看雹仿。
    • 操作日志:查看聚合接口的新增、修改整以、發(fā)布胧辽、下線、回滾公黑、刪除操作日志邑商。
    • 網(wǎng)關(guān)緩存:查看Fizz網(wǎng)關(guān)當(dāng)前在線的實(shí)例列表以及對(duì)應(yīng)實(shí)例本地緩存的已發(fā)布接口信息。
  • 發(fā)布申請(qǐng)
    • 我的申請(qǐng):提交接口發(fā)布|下線申請(qǐng)凡蚜,審核通過后可以對(duì)相關(guān)接口執(zhí)行發(fā)布|下線操作人断。
    • 待審核:審核發(fā)布|下線申請(qǐng)。
    • 審核日志:查看審核發(fā)布|下線申請(qǐng)操作日志朝蜘。
  • 權(quán)限管理
    • 角色管理:維護(hù)角色數(shù)據(jù)恶迈,為角色分配權(quán)限。
  • 系統(tǒng)管理
    • 用戶管理:維護(hù)用戶數(shù)據(jù)谱醇,為用戶分配角色暇仲。

登錄

Fizz管理后臺(tái)使用賬號(hào)密碼登錄,登錄界面如圖所示副渴。

manager_overview_1.png

輸入賬號(hào)熔吗、密碼、驗(yàn)證碼后登錄后臺(tái)佳晶,后臺(tái)驗(yàn)證成功后跳轉(zhuǎn)至后臺(tái)主界面桅狠,如圖所示。

manager_overview_2.png

網(wǎng)關(guān)管理

網(wǎng)關(guān)管理模塊主要用于維護(hù)Fizz Gateway的路由配置,本章節(jié)介紹網(wǎng)關(guān)管理下的路由管理功能的使用中跌。

路由管理概述

路由管理功能用于維護(hù)網(wǎng)關(guān)的路由規(guī)則咨堤,支持按請(qǐng)求路徑轉(zhuǎn)發(fā)、轉(zhuǎn)發(fā)到指定后端服務(wù)兩種轉(zhuǎn)發(fā)規(guī)則漩符,支持插件配置一喘。

路由列表

菜單位置:網(wǎng)關(guān)管理 > 路由管理。點(diǎn)擊菜單后進(jìn)入路由列表頁面嗜暴,如圖所示凸克。

manager_api_auth_list_query.png

新增路由

點(diǎn)擊 新增 按鈕彈出新增窗口,如圖所示闷沥。

manager_api_auth_add_1.png
manager_api_auth_add_2.png

網(wǎng)關(guān)分組:選取路由關(guān)聯(lián)的網(wǎng)關(guān)分組萎战,只有屬于所選分組的網(wǎng)關(guān)實(shí)例路由規(guī)則才會(huì)生效,必選舆逃;

服務(wù):網(wǎng)關(guān)的請(qǐng)求路徑格式為 http://{ip}:{port}/proxy/{service}{apiPath}蚂维,服務(wù)對(duì)應(yīng){service}段,當(dāng) 轉(zhuǎn)發(fā) 選擇 按請(qǐng)求路徑轉(zhuǎn)發(fā) 時(shí)服務(wù)需要是聚合配置的服務(wù)或者是Eureka注冊(cè)的服務(wù)路狮,當(dāng) 轉(zhuǎn)發(fā) 選擇 轉(zhuǎn)發(fā)到指定后端服務(wù) 時(shí)服務(wù)不需要是實(shí)際存在的服務(wù)虫啥,只用于路徑匹配使用,長度不能超過50個(gè)字符奄妨,必填涂籽;

API方法:請(qǐng)求的method類型,可選GET|POST砸抛;

API Path:網(wǎng)關(guān)的請(qǐng)求路徑格式為 http://{ip}:{port}/proxy/{service}{apiPath}又活,API Path對(duì)應(yīng){apiPath}段,使用前綴匹配原則锰悼,例如"/api/"將匹配"/api/"、"/api/1"团赏、"/api/1/1"等路徑箕般;

應(yīng)用:選取路由關(guān)聯(lián)的應(yīng)用,網(wǎng)關(guān)使用選取應(yīng)用的信息進(jìn)行鑒權(quán)舔清,更多詳情請(qǐng)查看appID管理功能介紹丝里;

訪問:可選允許|禁止,必選体谒;

轉(zhuǎn)發(fā):可選按請(qǐng)求路徑轉(zhuǎn)發(fā)|轉(zhuǎn)發(fā)到指定后端服務(wù)杯聚,當(dāng)選擇 按請(qǐng)求路徑轉(zhuǎn)發(fā) 時(shí),請(qǐng)求會(huì)按請(qǐng)求路徑轉(zhuǎn)發(fā)抒痒,例如網(wǎng)關(guān)請(qǐng)求 http://{ip}:{port}/proxy/my-service/api-path 將轉(zhuǎn)發(fā)到 http://my-service/api-path幌绍;當(dāng)選擇 轉(zhuǎn)發(fā)到指定后端服務(wù) 時(shí),需要添加轉(zhuǎn)發(fā)到的后端服務(wù)URL,請(qǐng)求會(huì)轉(zhuǎn)發(fā)到配置的后端服務(wù)傀广,例如配置了服務(wù)為 my-service颁独,API Path為空,后端服務(wù)URL為 http://127.0.0.1:8080/forward-service/伪冰,網(wǎng)關(guān)請(qǐng)求 http://{ip}:{port}/proxy/my-service/api-path 將轉(zhuǎn)發(fā)到 http://127.0.0.1:8080/forward-service/api-path誓酒。

點(diǎn)擊 添加插件 按鈕為路由添加插件,如圖所示贮聂。

manager_api_auth_add_3.png

配置插件路由級(jí)別的自定義配置靠柑,表單界面來自于插件的表單定義,更多詳情請(qǐng)查看插件管理功能介紹吓懈。

manager_api_auth_add_4.png

配置完成后點(diǎn)擊 保存 按鈕保存路由規(guī)則歼冰。

manager_api_auth_add_5.png

編輯路由

點(diǎn)擊 編輯 按鈕彈出編輯窗口,如圖所示骄瓣。

manager_api_auth_edit_1.png
manager_api_auth_edit_2.png

刪除路由

點(diǎn)擊 刪除 按鈕彈出刪除確認(rèn)窗口停巷,如圖所示。

manager_api_auth_delete_1.png
manager_api_auth_delete_2.png

服務(wù)編排

服務(wù)編排模塊主要用于維護(hù)Fizz Gateway的熱服務(wù)編排配置榕栏,本章節(jié)介紹服務(wù)編排下的接口列表功能的使用畔勤。

接口列表概述

接口列表功能用于維護(hù)聚合接口,聚合接口從外部調(diào)用方角度看是一個(gè)簡單的接口扒磁,通過入?yún)⒄?qǐng)求獲取響應(yīng)結(jié)果庆揪,內(nèi)部實(shí)現(xiàn)會(huì)調(diào)用多個(gè)底層后端服務(wù),將多個(gè)調(diào)用結(jié)果聚合轉(zhuǎn)換成外部調(diào)用方想要的數(shù)據(jù)格式妨托。

接口列表

菜單位置:服務(wù)編排 > 接口列表缸榛。點(diǎn)擊菜單后進(jìn)入接口列表頁面,如圖所示兰伤。

manager_aggregate_list_query.png

新增接口

點(diǎn)擊 新增 按鈕彈出新增窗口内颗,如圖所示。

manager_aggregate_add_1.png

基礎(chǔ)信息

manager_aggregate_add_2.png

所屬服務(wù):接口所屬服務(wù)敦腔,更多詳情請(qǐng)查看服務(wù)管理功能介紹均澳,必選;

接口名:接口名稱符衔,用于展示使用找前,長度不能超過200個(gè)字符,必填判族;

方法:接口請(qǐng)求方法類型躺盛,可選GET|POST,必選形帮;

路徑:接口請(qǐng)求路徑后綴槽惫,長度不能超過2000個(gè)字符周叮,必填;

開發(fā)人員:接口對(duì)應(yīng)負(fù)責(zé)的開發(fā)人員躯枢,長度不能超過200個(gè)字符则吟;

描述:接口功能描述,長度不能超過2000個(gè)字符锄蹂;

舉個(gè)例子氓仲,所屬服務(wù)設(shè)置my-test-service,方法設(shè)置POST得糜,路徑設(shè)置test-aggregate-post敬扛,對(duì)應(yīng)的聚合接口請(qǐng)求為 POST http://{Fizz網(wǎng)關(guān)ip地址}:{port端口}/proxy/my-test-service/test-aggregate-post。

配置輸入

聚合接口的入?yún)⒋蟛糠质峭ㄟ^JSON Schema來定義的朝抖,下面先簡單地介紹下JSON Schema啥箭。

JSON Schema介紹

JSON Schema實(shí)際上也是JSON數(shù)據(jù),用于標(biāo)注和驗(yàn)證JSON文檔治宣,可以類比于XML Schema急侥,當(dāng)前最新版本2019-09。

作為普通用戶侮邀,我們并不需要去了解JSON Schema的規(guī)范內(nèi)容坏怪,只要能夠構(gòu)建JSON Schema即可。

要理解JSON Schema绊茧,首先要理解什么是JSON铝宵。JSON是JavaScript Object Notation的縮寫,一種簡單的數(shù)據(jù)交換格式华畏。最初JSON是基于JavaScript鹏秋,廣泛的應(yīng)用于萬維網(wǎng)。由于其簡潔和清晰的層次結(jié)構(gòu)亡笑、易于人閱讀等特性侣夷,使得越來越多的場(chǎng)景下被采用。

JSON包含以下數(shù)據(jù)結(jié)構(gòu):

  • object:
    { "key1": "value1", "key2": "value2" }
    
  • array:
    [ "first", "second", "third" ]
    
  • number:
    42
    3.1415926
    
  • string:
    "This is a string"
    
  • boolean:
    true
    false
    
  • null:
    null
    

通過以上的簡單數(shù)據(jù)類型仑乌,就能構(gòu)造復(fù)雜的結(jié)構(gòu)化數(shù)據(jù)了百拓。下面舉兩個(gè)例子:

{
  "name": "George Washington",
  "birthday": "February 22, 1732",
  "address": "Mount Vernon, Virginia, United States"
}
{
  "first_name": "George",
  "last_name": "Washington",
  "birthday": "1732-02-22",
  "address": {
    "street_address": "3200 Mount Vernon Memorial Highway",
    "city": "Mount Vernon",
    "state": "Virginia",
    "country": "United States"
  }
}

以上兩個(gè)例子都是有效的JSON數(shù)據(jù),包含一樣的有效信息绝骚,但是當(dāng)程序讀取數(shù)據(jù)時(shí),需要準(zhǔn)確的知道數(shù)據(jù)是怎么組織的祠够,比如哪些字段是必須压汪,這些字段是什么類型。這時(shí)候JSON Schema就派上用場(chǎng)了古瓤,看以下JSON Schema例子:

{
  "type": "object",
  "properties": {
    "first_name": { "type": "string" },
    "last_name": { "type": "string" },
    "birthday": { "type": "string", "format": "date" },
    "address": {
      "type": "object",
      "properties": {
        "street_address": { "type": "string" },
        "city": { "type": "string" },
        "state": { "type": "string" },
        "country": { "type" : "string" }
      }
    }
  }
}

用以上JSON Schema驗(yàn)證第一個(gè)例子時(shí)止剖,驗(yàn)證失斚傺簟;但是第二個(gè)例子驗(yàn)證通過穿香。

JSON Schema本身也是通過JSON編寫亭引,其本身也是數(shù)據(jù),不是一個(gè)計(jì)算機(jī)程序皮获,只是一種“描述其它數(shù)據(jù)的結(jié)構(gòu)”的聲明格式焙蚓。這既是長處,也是弱點(diǎn)洒宝,JSON Schema可以簡潔地描述數(shù)據(jù)的結(jié)構(gòu)并且自動(dòng)驗(yàn)證數(shù)據(jù)购公,但是對(duì)于數(shù)據(jù)元素間的關(guān)系表達(dá)就力不能及了。

更多JSON Schema知識(shí)可以閱讀Understanding JSON Schema雁歌。

請(qǐng)求頭部

定義聚合接口的請(qǐng)求Header參數(shù)宏浩。

manager_aggregate_add_3.png

舉個(gè)例子:

{
  "type": "object",
  "properties": {
    "headerParam1": {
      "type": "string",
      "title": "請(qǐng)求頭參數(shù)1",
      "titleEn": "headerParam1"
    }
  },
  "required": [
    "headerParam1"
  ]
}

以上例子定義了必傳請(qǐng)求頭參數(shù)headerParam1

title字段用于驗(yàn)證失敗時(shí)提示使用靠瞎,例如請(qǐng)求接口時(shí)沒傳請(qǐng)求頭時(shí)會(huì)提示“請(qǐng)求頭參數(shù)1不能為空”(錯(cuò)誤提示輸出通過校驗(yàn)結(jié)果配置比庄,詳情請(qǐng)看后文介紹),如圖所示乏盐。

manager_aggregate_add_input_header_1.png

當(dāng)定義了語言配置(詳情請(qǐng)查看后文的語言配置介紹)選項(xiàng)為英文時(shí)會(huì)使用titleEn字段用于驗(yàn)證失敗時(shí)提示使用佳窑,例如請(qǐng)求接口時(shí)沒傳請(qǐng)求頭時(shí)會(huì)提示“headerParam1 is missing but it is required”(錯(cuò)誤提示輸出通過校驗(yàn)結(jié)果配置,詳情請(qǐng)看后文介紹)丑勤,如圖所示华嘹。

manager_aggregate_add_input_header_2.png
請(qǐng)求體

定義聚合接口的請(qǐng)求體參數(shù)罕模。

manager_aggregate_add_4.png

舉個(gè)例子:

{
  "type": "object",
  "properties": {
    "bodyParam1": {
      "type": "string",
      "title": "請(qǐng)求體參數(shù)1",
      "titleEn": "bodyParam1"
    }
  },
  "required": [
    "bodyParam1"
  ]
}

以上例子定義了必傳請(qǐng)求體參數(shù)bodyParam1南窗。

title字段用于驗(yàn)證失敗時(shí)提示使用,例如請(qǐng)求接口時(shí)沒傳請(qǐng)求體參數(shù)時(shí)會(huì)提示“請(qǐng)求體參數(shù)1不能為空”(錯(cuò)誤提示輸出通過校驗(yàn)結(jié)果配置仰楚,詳情請(qǐng)看后文介紹)岔霸,如圖所示薛躬。

manager_aggregate_add_input_body_1.png

當(dāng)定義了語言配置(詳情請(qǐng)查看后文的語言配置介紹)選項(xiàng)為英文時(shí)會(huì)使用titleEn字段用于驗(yàn)證失敗時(shí)提示使用,例如請(qǐng)求接口時(shí)沒傳請(qǐng)求體參數(shù)時(shí)會(huì)提示“bodyParam1 is missing but it is required”(錯(cuò)誤提示輸出通過校驗(yàn)結(jié)果配置呆细,詳情請(qǐng)看后文介紹)型宝,如圖所示。

manager_aggregate_add_input_body_2.png
Query參數(shù)

定義聚合接口的Query參數(shù)絮爷。

manager_aggregate_add_5.png

舉個(gè)例子:

{
  "type": "object",
  "properties": {
    "queryParam1": {
      "type": "string",
      "title": "query參數(shù)1",
      "titleEn": "queryParam1"
    }
  },
  "required": [
    "queryParam1"
  ]
}

以上例子定義了必傳Query參數(shù)queryParam1趴酣。

title字段用于驗(yàn)證失敗時(shí)提示使用,例如請(qǐng)求接口時(shí)沒傳Query參數(shù)時(shí)會(huì)提示“query參數(shù)1不能為空”(錯(cuò)誤提示輸出通過校驗(yàn)結(jié)果配置坑夯,詳情請(qǐng)看后文介紹)岖寞,如圖所示。

manager_aggregate_add_input_query_1.png

當(dāng)定義了語言配置(詳情請(qǐng)查看后文的語言配置介紹)選項(xiàng)為英文時(shí)會(huì)使用titleEn字段用于驗(yàn)證失敗時(shí)提示使用柜蜈,例如請(qǐng)求接口時(shí)沒傳Query參數(shù)時(shí)會(huì)提示“queryParam1 is missing but it is required”(錯(cuò)誤提示輸出通過校驗(yàn)結(jié)果配置仗谆,詳情請(qǐng)看后文介紹)指巡,如圖所示。

manager_aggregate_add_input_query_2.png
腳本校驗(yàn)

對(duì)于JSON Schema規(guī)范無法覆蓋的校驗(yàn)場(chǎng)景可以使用腳本對(duì)入?yún)⑦M(jìn)行更加靈活的處理隶垮。

manager_aggregate_add_6.png

點(diǎn)擊 新增 按鈕后彈出腳本配置窗口藻雪,如圖所示。

manager_aggregate_add_7.png

腳本類型:可選javascript|groovy狸吞,必選勉耀;

腳本內(nèi)容:所選的腳本類型語言編寫的入?yún)Ⅱ?yàn)證腳本,必填捷绒。

舉個(gè)例子:

// javascript腳本函數(shù)名不能修改
function dyFunc(paramsJsonStr) {
  // 上下文, 數(shù)據(jù)結(jié)構(gòu)請(qǐng)參考 context.js
  var context = JSON.parse(paramsJsonStr)['context'];
  // common為內(nèi)置的上下文便捷操作工具類瑰排,詳情請(qǐng)參考common.js;例如:
  // var data = common.getStepRespBody(context, 'step2', 'request1', 'data');

  // do something
  var headerParam1 = common.getInputReqHeader(context, 'headerParam1');
  var bodyParam1 = common.getInputReqBody(context, 'bodyParam1');
  var queryParam1 = common.getInputReqParam(context, 'queryParam1');
  var result = new Array();
  if (headerParam1 != bodyParam1) {
    result.push("headerParam1與bodyParam1不一致");
  }
  if (queryParam1 != bodyParam1) {
    result.push("queryParam1與bodyParam1不一致");
  }
  if (headerParam1 != queryParam1) {
    result.push("headerParam1與queryParam1不一致");
  }

  // 返回結(jié)果為Array或Object時(shí)要先轉(zhuǎn)為json字符串
  return JSON.stringify(result);
}

以上例子使用javascript編寫參數(shù)校驗(yàn)暖侨,限制入?yún)?code>headerParam1椭住、bodyParam1queryParam1必須一致字逗,不一致將提示錯(cuò)誤信息(錯(cuò)誤提示輸出通過校驗(yàn)結(jié)果配置京郑,詳情請(qǐng)看后文介紹),如圖所示葫掉。

manager_aggregate_add_input_script.png
語言配置

聚合接口默認(rèn)使用中文響應(yīng)校驗(yàn)失敗提示些举,通過配置可通過入?yún)⑦x擇不同的提示語言,目前支持中文俭厚、英文提示(已滿足我們的業(yè)務(wù)使用場(chǎng)景户魏,有其他語言要求的小伙伴可以聯(lián)系我們添加)。

manager_aggregate_add_8.png

字段:入?yún)⒆侄沃蹬布罚?code>input.request.body.languageCode使用請(qǐng)求體參數(shù)languageCode的值來決定使用哪種語言叼丑;

中文:中文與入?yún)⒆侄沃档挠成潢P(guān)系,例如配置0扛门,當(dāng)請(qǐng)求入?yún)⒆侄沃禐?code>0時(shí)使用中文提示校驗(yàn)結(jié)果鸠信;

英文:英文與入?yún)⒆侄沃档挠成潢P(guān)系,例如配置1论寨,當(dāng)請(qǐng)求入?yún)⒆侄沃禐?code>1時(shí)使用中文提示校驗(yàn)結(jié)果星立。

配置步驟

聚合接口調(diào)用底層服務(wù)是通過多個(gè)step實(shí)現(xiàn)的,多個(gè)step串行執(zhí)行葬凳,每個(gè)step包含多個(gè)request(對(duì)底層服務(wù)接口的調(diào)用)绰垂,同個(gè)step里的多個(gè)request并行執(zhí)行,后執(zhí)行的step可以獲取已執(zhí)行step的執(zhí)行結(jié)果火焰,更多詳情請(qǐng)查看服務(wù)編排文章的介紹劲装,下面介紹配置步驟的使用。

manager_aggregate_add_9.png

是否執(zhí)行完此步驟后結(jié)束:勾選后實(shí)際請(qǐng)求只執(zhí)行完該步驟后即響應(yīng)結(jié)果荐健,不執(zhí)行后續(xù)步驟酱畅,用于調(diào)試使用;

請(qǐng)求方法:調(diào)用底層服務(wù)接口的請(qǐng)求類型江场,可選GET|POST纺酸,必選;

默認(rèn)URL:調(diào)用底層服務(wù)接口的默認(rèn)URL址否,當(dāng)Fizz網(wǎng)關(guān)啟動(dòng)環(huán)境沒有配置URL時(shí)使用該默認(rèn)URL餐蔬;

開發(fā)環(huán)境URL:開發(fā)環(huán)境調(diào)用底層服務(wù)接口的URL,當(dāng)Fizz網(wǎng)關(guān)啟動(dòng)使用spring.profiles.active=dev時(shí)使用該URL佑附;

測(cè)試環(huán)境URL:測(cè)試環(huán)境調(diào)用底層服務(wù)接口的URL樊诺,當(dāng)Fizz網(wǎng)關(guān)啟動(dòng)使用spring.profiles.active=test時(shí)使用該URL;

預(yù)生產(chǎn)環(huán)境URL:預(yù)生產(chǎn)環(huán)境調(diào)用底層服務(wù)接口的URL音同,當(dāng)Fizz網(wǎng)關(guān)啟動(dòng)使用spring.profiles.active=pre時(shí)使用該URL词爬;

生產(chǎn)環(huán)境URL:生產(chǎn)環(huán)境調(diào)用底層服務(wù)接口的URL,當(dāng)Fizz網(wǎng)關(guān)啟動(dòng)使用spring.profiles.active=prod時(shí)使用該URL权均;

超時(shí)時(shí)間(毫秒):調(diào)用底層服務(wù)接口的超時(shí)時(shí)間顿膨,超時(shí)拋出異常,單位毫秒叽赊;

Fallback:可選stop|continue恋沃,控制當(dāng)調(diào)用底層服務(wù)接口失敗后是否繼續(xù)執(zhí)行后續(xù)操作;

請(qǐng)求預(yù)處理:勾選后可配置預(yù)處理腳本必指,預(yù)處理腳本返回true時(shí)才執(zhí)行調(diào)用底層服務(wù)接口囊咏。

manager_aggregate_add_10.png

配置入?yún)ⅲ号渲谜{(diào)用底層服務(wù)接口的請(qǐng)求參數(shù);

配置響應(yīng):配置調(diào)用底層服務(wù)接口的響應(yīng)內(nèi)容塔橡。

manager_aggregate_add_11.png

配置步驟結(jié)果:配置step執(zhí)行完成后的響應(yīng)內(nèi)容梅割。

配置輸出

配置聚合接口調(diào)用完成的響應(yīng)內(nèi)容。在響應(yīng)體谱邪、響應(yīng)頭配置中可以配置簡單的響應(yīng)固定值炮捧、響應(yīng)引用值,對(duì)于需要邏輯處理得到結(jié)果的響應(yīng)可以通過腳本配置靈活處理惦银,如圖所示咆课。

manager_aggregate_add_12.png
manager_aggregate_add_13.png

校驗(yàn)結(jié)果

配置聚合接口入?yún)⑿r?yàn)失敗后的響應(yīng)內(nèi)容,在響應(yīng)體扯俱、響應(yīng)頭配置中可以配置簡單的響應(yīng)固定值书蚪、響應(yīng)引用值,對(duì)于需要邏輯處理得到結(jié)果的響應(yīng)可以通過腳本配置靈活處理迅栅,如圖所示殊校。

manager_aggregate_add_14.png

校驗(yàn)結(jié)果有一個(gè)專用的引用值validateMsg,該引用值用于存放入?yún)Ⅱ?yàn)證錯(cuò)誤提示信息。

保存接口

所有配置完成后點(diǎn)擊 保存 按鈕读存,完成聚合接口的配置为流。

manager_aggregate_add_15.png

導(dǎo)出接口

導(dǎo)出功能將聚合接口以配置文件的形式導(dǎo)出呕屎,導(dǎo)出的文件可通過導(dǎo)入功能重新導(dǎo)入系統(tǒng),當(dāng)我們的系統(tǒng)分多個(gè)環(huán)境時(shí)敬察,可使用導(dǎo)出導(dǎo)入功能實(shí)現(xiàn)聚合接口的快速同步秀睛,下面介紹導(dǎo)出功能。

manager_aggregate_export_1.png

勾選想到導(dǎo)出的接口莲祸,點(diǎn)擊 導(dǎo)出 按鈕彈出確認(rèn)窗口蹂安,如圖所示。

manager_aggregate_export_2.png

點(diǎn)擊 確定 按鈕锐帜,瀏覽器保存配置文件田盈,如圖所示。

manager_aggregate_export_3.png

導(dǎo)入接口

導(dǎo)入功能將配置文件中的聚合接口轉(zhuǎn)化成后臺(tái)的持久化存儲(chǔ)缴阎,導(dǎo)入的文件可以通過導(dǎo)出功能獲取或者通過編寫好的聚合配置JSON文件轉(zhuǎn)化得到(轉(zhuǎn)換工具可以聯(lián)系我們獲仍是啤)。當(dāng)我們的系統(tǒng)分多個(gè)環(huán)境時(shí)蛮拔,可使用導(dǎo)出導(dǎo)入功能實(shí)現(xiàn)聚合接口的快速同步瓷式,下面介紹導(dǎo)出功能。

manager_aggregate_import_1.png

點(diǎn)擊 導(dǎo)入 按鈕彈出導(dǎo)入配置窗口语泽,如圖所示贸典。

manager_aggregate_import_2.png

點(diǎn)擊 選取文件 按鈕后選取要導(dǎo)入的配置文件;

強(qiáng)制覆蓋:通過請(qǐng)求類型(GET|POST)踱卵、請(qǐng)求路徑(/proxy/{service}/{apiPath})可以唯一確定一個(gè)聚合接口廊驼,當(dāng)聚合接口已存在時(shí),未勾選該選項(xiàng)時(shí)忽略該聚合接口導(dǎo)入惋砂,勾選該選項(xiàng)時(shí)覆蓋已存在的聚合接口配置妒挎;

點(diǎn)擊 確定 按鈕后導(dǎo)入聚合接口配置。

調(diào)試模式

調(diào)試模式用于對(duì)接口開發(fā)過程中的調(diào)試使用西饵,當(dāng)打開調(diào)試模式后酝掩,F(xiàn)izz網(wǎng)關(guān)會(huì)將聚合接口調(diào)用底層服務(wù)接口的請(qǐng)求響應(yīng)信息以及耗時(shí)、聚合結(jié)果眷柔、步驟上下文打印到日志中期虾,通過日志可以清楚的了解聚合接口的實(shí)際執(zhí)行情況。調(diào)試模式會(huì)對(duì)網(wǎng)關(guān)性能造成影響驯嘱,因此不建議在生產(chǎn)環(huán)境打開調(diào)試模式镶苞,當(dāng)調(diào)試完成后及時(shí)關(guān)閉調(diào)試模式,避免打印過多日志造成資源浪費(fèi)鞠评,下面介紹調(diào)試模式的使用茂蚓。

勾選想要打開調(diào)試模式的接口,點(diǎn)擊 打開調(diào)試模式 按鈕彈出確認(rèn)窗口,如圖所示聋涨。

manager_aggregate_debug_mode_1.png

點(diǎn)擊 確定 按鈕確認(rèn)打開調(diào)試模式晾浴。

manager_aggregate_debug_mode_2.png

勾選想要關(guān)閉調(diào)試模式的接口,點(diǎn)擊 關(guān)閉調(diào)試模式 按鈕彈出確認(rèn)窗口牍白,如圖所示怠肋。

manager_aggregate_debug_mode_3.png

點(diǎn)擊 確定 按鈕確認(rèn)關(guān)閉調(diào)試模式。

manager_aggregate_debug_mode_4.png

編輯接口

點(diǎn)擊 編輯 按鈕彈出編輯窗口淹朋,如圖所示。

manager_aggregate_edit_1.png
manager_aggregate_edit_2.png

刪除接口

點(diǎn)擊 刪除 按鈕彈出刪除確認(rèn)窗口钉答,如圖所示数尿。

manager_aggregate_delete_1.png
manager_aggregate_delete_2.png

點(diǎn)擊 確定 按鈕后刪除接口,處于已發(fā)布狀態(tài)的接口無法刪除右蹦,需要下線后才能操作刪除何陆。

發(fā)布|下線申請(qǐng)

發(fā)布|下線申請(qǐng)用于聚合接口的發(fā)布或者下線申請(qǐng)晨汹,只有通過審核人審核后申請(qǐng)人才能執(zhí)行發(fā)布|下線操作贷盲,避免誤操作‘巩剖,保證接口的安全佳魔。

點(diǎn)擊 發(fā)布|下線申請(qǐng) 按鈕鞠鲜,彈出發(fā)布|下線申請(qǐng)窗口贤姆,如圖所示庐氮。

manager_aggregate_apply_1.png
manager_aggregate_apply_2.png

點(diǎn)擊 添加 按鈕后仙畦,彈出接口列表慨畸,勾選需要操作的接口寸士,點(diǎn)擊 確定 添加進(jìn)申請(qǐng)中弱卡。

manager_aggregate_apply_3.png

標(biāo)題:申請(qǐng)的標(biāo)題瓮具,長度不能超過200個(gè)字符名党,必填挠轴;

類型:申請(qǐng)類型蒋歌,可選發(fā)布|下線堂油,必選府框;

申請(qǐng)?jiān)颍荷暾?qǐng)的原因迫靖,長度不能超過2000個(gè)字符系宜;

選擇審核人:選擇有審核權(quán)限的人對(duì)申請(qǐng)進(jìn)行審核俩垃,列表根據(jù)需要操作的接口動(dòng)態(tài)變化(未添加接口時(shí)列表為空口柳,擁有服務(wù)權(quán)限并且有待審核菜單權(quán)限的人跃闹、操作管理員角色的人為可選審核人),必選找默;

點(diǎn)擊 確定 按鈕后提交申請(qǐng),選擇的審核人會(huì)收到申請(qǐng)審核郵件(審核人郵箱地址通過用戶管理設(shè)置旨剥,更多詳情請(qǐng)查看用戶管理功能介紹),如圖所示蚌父。

manager_aggregate_apply_4.png

接口測(cè)試

后臺(tái)提供了可視化的接口調(diào)用界面,聚合接口創(chuàng)建完成后可通過該界面對(duì)接口進(jìn)行調(diào)用測(cè)試膏秫。通過點(diǎn)擊接口詳情頁面的 測(cè)試 按鈕打開接口測(cè)試頁面缤削,如圖所示。

manager_aggregate_test_1.png

跳轉(zhuǎn)頁面的同時(shí)后臺(tái)會(huì)將接口當(dāng)前的最新配置推送給Fizz網(wǎng)關(guān)生成一個(gè)測(cè)試接口帅刀,請(qǐng)求路徑為/proxytest/{service}/{apiPath}哨鸭。

manager_aggregate_test_2.png

點(diǎn)擊 發(fā)送 按鈕向指定接口發(fā)送一次請(qǐng)求像鸡,Response響應(yīng)結(jié)果區(qū)域顯示調(diào)用接口結(jié)果,如圖所示蛔钙。

manager_aggregate_test_3.png
manager_aggregate_test_4.png

請(qǐng)求體tab用于配置請(qǐng)求的請(qǐng)求體參數(shù)。

manager_aggregate_test_5.png

請(qǐng)求頭tab用于配置請(qǐng)求的請(qǐng)求頭參數(shù)。

manager_aggregate_test_6.png

Query參數(shù)用于配置請(qǐng)求的Query參數(shù)遍希。

manager_aggregate_test_7.png

返回Context:Fizz網(wǎng)關(guān)中一次聚合接口的請(qǐng)求過程中內(nèi)部會(huì)持有一個(gè)Context對(duì)象,該對(duì)象保存了本次請(qǐng)求過程的入?yún)⑿畔ⅰ⒌讓臃?wù)接口調(diào)用信息虱饿、響應(yīng)信息氮发,通過勾選該選項(xiàng)爽冕,接口會(huì)將Context隨接口響應(yīng)一起返回乌奇,通過查看Context可以清楚地了解接口的實(shí)際調(diào)用過程礁苗。

未勾選 返回Context 選項(xiàng)時(shí)试伙,接口按配置輸出的設(shè)置響應(yīng)結(jié)果疏叨,如圖所示蚤蔓。

manager_aggregate_test_8.png

勾選 返回Context 選項(xiàng)后,接口會(huì)將Context隨接口響應(yīng)一起返回吐辙,如圖所示袱讹。

manager_aggregate_test_9.png

測(cè)試接口:調(diào)用測(cè)試接口椒丧,請(qǐng)求路徑為/proxytest/{service}/{apiPath}壶熏;

正式接口:調(diào)用正式接口溯职,請(qǐng)求路徑為/proxy/{service}/{apiPath};

manager_aggregate_test_10.png

點(diǎn)擊 保存 按鈕會(huì)將本次測(cè)試請(qǐng)求數(shù)據(jù)保存下來,通過選取已保存的測(cè)試記錄可以快速恢復(fù)請(qǐng)求數(shù)據(jù)僻族,如圖所示述么。

manager_aggregate_test_11.png

標(biāo)題:本次測(cè)試數(shù)據(jù)保存時(shí)使用的標(biāo)題顶伞,長度不能超過2000個(gè)字符,保存后在歷史測(cè)試記錄列表顯示挠锥,如圖所示蓖租。

manager_aggregate_test_12.png

發(fā)布申請(qǐng)

發(fā)布申請(qǐng)模塊主要用于規(guī)范化聚合接口的發(fā)布下線流程,保證接口通過審核才能被執(zhí)行操作稠茂,本章節(jié)介紹發(fā)布申請(qǐng)下的我的申請(qǐng)功能的使用。

我的申請(qǐng)概述

聚合接口的發(fā)布|下線操作需要提交發(fā)布|下線申請(qǐng)电爹,審核通過后申請(qǐng)人才能執(zhí)行發(fā)布|下線操作,我的申請(qǐng)功能用于發(fā)布|下線申請(qǐng)過程的相關(guān)操作屎勘。

申請(qǐng)列表

菜單位置:發(fā)布申請(qǐng) > 我的申請(qǐng)概漱。點(diǎn)擊菜單后進(jìn)入申請(qǐng)列表頁面犀概,如圖所示铛绰。

manager_aggregate_my_apply_list_query.png

申請(qǐng)撤回

對(duì)于已提交但未被審核的申請(qǐng)可執(zhí)行撤回操作捂掰,點(diǎn)擊 撤回 按鈕彈出確認(rèn)窗口这嚣,如圖所示。

manager_aggregate_my_apply_revoke_1.png

點(diǎn)擊 確定 按鈕后確認(rèn)撤回申請(qǐng)罐旗,如圖所示。

manager_aggregate_my_apply_revoke_2.png

撤回后審核人會(huì)收到郵箱提醒無需再處理該申請(qǐng)鼓蜒,如圖所示。

manager_aggregate_my_apply_revoke_3.png

撤回后可對(duì)申請(qǐng)重新進(jìn)行編輯后再次提交锤躁,點(diǎn)擊 編輯 按鈕后彈出編輯窗口系羞,如圖所示昭伸。

manager_aggregate_my_apply_revoke_4.png

點(diǎn)擊 確定 按鈕后再次提交申請(qǐng)选调,如圖所示仁堪。

manager_aggregate_my_apply_revoke_5.png

申請(qǐng)?jiān)斍?/h3>

點(diǎn)擊 查看 按鈕查看申請(qǐng)?jiān)斍椤?/p>

manager_aggregate_my_apply_detail_1.png
manager_aggregate_my_apply_detail_2.png

操作日志記錄該申請(qǐng)的所有操作氛什,包括申請(qǐng)?zhí)峤磺姑肌⑸暾?qǐng)撤回欺冀、申請(qǐng)重新提交隐轩、審核不通過、審核通過悴灵、修改審核人、接口發(fā)布茫孔、接口下線 缰贝、接口回滾、接口撤回赞弥。

待審核狀態(tài)申請(qǐng)可以更換審核人毛嫉,點(diǎn)擊 修改審核人 按鈕后彈出修改審核人窗口,如圖所示辛臊。

manager_aggregate_my_apply_detail_3.png

重新選擇審核人后點(diǎn)擊 確定 按鈕,修改審核人完成刃唤。

修改后原審核人會(huì)收到郵件提醒無須再處理該申請(qǐng)。

修改后新的審核人會(huì)收到郵件提醒需要處理該申請(qǐng)笼裳。

審核通過后可以對(duì)接口進(jìn)行發(fā)布操作,如圖所示允青。

manager_aggregate_my_apply_detail_4.png

批量發(fā)布:對(duì)申請(qǐng)內(nèi)的接口批量發(fā)布推送到Fizz網(wǎng)關(guān)偎箫。

批量回滾:對(duì)申請(qǐng)內(nèi)的接口批量回滾到上一個(gè)版本淹办,當(dāng)發(fā)布后接口異常時(shí)該操作相當(dāng)有用速挑。

對(duì)于申請(qǐng)通過后又無須操作的接口可以執(zhí)行撤回操作,撤回接口時(shí)必須填寫備注信息用于回溯查詢腊满,如圖所示。

manager_aggregate_my_apply_detail_5.png
manager_aggregate_my_apply_detail_6.png

結(jié)束語

本篇文章介紹了Fizz管理后臺(tái)各個(gè)功能的作用,之后詳細(xì)的介紹了網(wǎng)關(guān)管理笤受、服務(wù)編排、發(fā)布申請(qǐng)模塊的核心功能使用比肄。希望讀者通過本篇文章的閱讀能夠掌握Fizz管理后臺(tái)的使用,通過對(duì)后臺(tái)功能的靈活使用充分發(fā)揮Fizz Gateway的能力,為我們的企業(yè)開發(fā)降低成本嘹害,提升效率吮便。

介紹

作者:fizz-zhongjie
Fizz Gateway開源地址:https://github.com/wehotel/fizz-gateway-community

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笔呀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子髓需,更是在濱河造成了極大的恐慌许师,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件微渠,死亡現(xiàn)場(chǎng)離奇詭異搭幻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)逞盆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門檀蹋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人云芦,你說我怎么就攤上這事俯逾。” “怎么了舅逸?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵纱昧,是天一觀的道長。 經(jīng)常有香客問我堡赔,道長识脆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任善已,我火速辦了婚禮灼捂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘换团。我一直安慰自己悉稠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布艘包。 她就那樣靜靜地躺著的猛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪想虎。 梳的紋絲不亂的頭發(fā)上卦尊,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音舌厨,去河邊找鬼岂却。 笑死,一個(gè)胖子當(dāng)著我的面吹牛裙椭,可吹牛的內(nèi)容都是我干的躏哩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼揉燃,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扫尺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起炊汤,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤正驻,失蹤者是張志新(化名)和其女友劉穎弊攘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拨拓,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肴颊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年氓栈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渣磷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡授瘦,死狀恐怖醋界,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情提完,我是刑警寧澤形纺,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站徒欣,受9級(jí)特大地震影響逐样,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜打肝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一脂新、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粗梭,春花似錦争便、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鉴嗤,卻和暖如春斩启,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背醉锅。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工浇垦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荣挨。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓男韧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親默垄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子此虑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容