概述
在前面的教程里已經介紹過服務編排的功能,服務編排主要是基于現有的業務微服務使用在線配置的方式快速的生成一個聚合介面,在進行入參或結果處理時,常要進行資料轉換或計算,此時可用常用的內置函式來處理,如果函式處理不了可用通過撰寫腳本來實作,Fizz版本要求:v2.3或以上版本,函式以fn.開頭,如fn.date.timestamp(), date為類別, 網關內置了以下幾大類函式
- 公共類 fn.common
- 日期類 fn.date
- 字串類 fn.string
- 編解碼類 fn.codec
- 數學類 fn.math
- 資料串列類 fn.list
樣例:


支持的所有函式串列可參考官方檔案:函式使用檔案
參考值
在函式里支持使用參考值,如:
fn.string.concat({step1.result.channelCode},{step1.result.nonce})
{step1.result.channelCode} 表示參考值, 參考step1結果里的channelCode欄位的值
fn.string.concat({step1.result.channelCode},{g.account.name})
{g.account.name} 表示參考值, 參考公共資源“account.name”, 以g開頭表示參考公共資源,公共資源可以定義鍵(Key)值(Value)對資料,在服務編排介面中通過參考鍵(Key)來獲取值(Value),從而避免將值硬編碼在介面中,選單位置:告警管理 > 公共資源,點擊選單后進入公共資源串列頁面,如圖所示,

公共資源使用檔案
嵌套呼叫
支持多重嵌套呼叫,如:
fn.codec.md5(
fn.date.add(
fn.date.add(
"2021-07-09 22:44:55",
"yyyy-MM-dd HH:mm:ss",
1,
fn.math.addExact(999,1)
),
"yyyy-MM-dd HH:mm:ss",
fn.math.addExact(0,1),
1000
)
)
fn.string.toUpperCase(
fn.codec.sha256(
fn.string.concat(
{step1.result.channelCode},
{step1.result.nonce},
{step1.result.timestamp},
{step1.result.appSecret}
)
)
)
資料準備
Fizz網關安裝
可參考:https://www.fizzgate.com/fizz/guide/installation
函式樣例演示
在選單:服務編排->介面串列下新增一個演示用的服務編排介面/test/func,介面掛在service1服務下(沒有服務可以新增一個),定義三個入參, 分別是num1,num2兩個數字用于演示數字比較,age年齡用于演示根據年齡做判斷,因為該例子不涉及到外部介面呼叫"配置步驟“可留空,如圖:


配置輸出里添加以下輸出欄位:
- currentTime:獲取當前時間
- threeHoursLater:當前時間加上3小時
- birthdayFromIDCard:從身份證里提取生日并格式化展示
- cardTypeByAge:判斷年齡大于等于60回傳老年卡,否則回傳普通卡
- signature:使用SHA256加密方式生成簽名
- maxNum:回傳兩個數中的最大值

點擊右上角的測驗按鈕進入到測驗頁面,填寫Query引數,點擊發送可得到結果:

基于函式的嵌套呼叫可以實作比較復雜的運算,可以滿足日常大部分運算的需求,更多用法參考官方檔案:服務編排-函式
Fizz網關介紹
Fizz Gateway 是一個基于 Java開發的微服務聚合網關,能夠實作熱服務編排聚合、自動授權選擇、線上服務腳本編碼、在線測驗、高性能路由、API審核管理、回呼管理等目的,擁有強大的自定義插件系統可以自行擴展,并且提供友好的圖形化配置界面,能夠快速幫助企業進行API服務治理、減少中間層膠水代碼以及降低編碼投入、提高 API 服務的穩定性和安全性,
官網:https://www.fizzgate.com
GitHub:https://github.com/wehotel/fizz-gateway-community
碼云:https://gitee.com/fizzgate/fizz-gateway
入門教程:https://www.fizzgate.com/fizz/guide/GettingStarted/
進階教程:https://www.fizzgate.com/fizz/guide/advanced/
作者:黑鷹
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/476944.html
標籤:Java
下一篇:Java 執行緒常用操作
