概述
BFF(Backend for Frontend)是指为了前端服务的后端,这一层没有复杂的业务逻辑,主要是做简单的数据聚合、字段转换或裁剪服务编排是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的结果
fn.string.concat({step1.result.channelCode},{g.account.name})
{g.account.name} 表示引用值, 引用公共资源“account.name”, 以g开头表示引用公共资源
#嵌套调用
支持多重嵌套调用,如:
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}
)
)
)
#数据列表类函数
函数 | 返回值类型 | 用途 | 参数说明 |
---|---|---|---|
fn.list.expand( List<List<Object>> data) |
List<Object> | 将二维数组(列表)展开为一维数组(列表), 如: data=[[{a:1}],[{a:2}],[{a:3}]] fn.list.expand(data) 返回:[{a:1},{a:2},{a:3}] |
data: 二维数组(列表) |