PGSQL将字段改为不能为空
644 2023-04-03 04:00:45
服务编排是Fizz网关提供的一个强大的功能,能够基于现有的业务微服务通过在线配置的方式快速的生成一个聚合接口,减少中间层胶水代码以及降低编码投入。在服务编排中支持使用函数,本进阶教程中我们分三篇文章(上篇:列表展开&合并、中篇:列表提取&关联、下篇:列表字段重命名&字段移除)来介绍数据列表类函数的使用。
本文为服务编排处理列表数据系列的下篇。
函数是服务编排提供的一个强大又便捷的功能,通过将一些常用的逻辑封装成函数,在服务编排中使用函数对服务编排过程的数据进行处理,从而简化我们的配置又能实现复杂的功能。
版本要求:v2.3或以上版本
函数以fn.开头,如fn.date.timestamp(), date为类别, 网关内置了以下几大类函数
在函数里支持使用引用值,如:
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})))
可参考: https://www.fizzgate.com/fizz/guide/installation
本文服务编排调用的底层服务接口源码可从github(https://github.com/wehotel/fizz-examples)获取。从github克隆最新的fizz-examples源码,并启动fizz-examples-rest-api服务。
管理后台(菜单位置:RPC管理->服务声明)配置服务声明,如图所示。
管理后台,菜单位置:服务编辑->接口列表,点击新增。
本例子在编排接口中调用底层fizz-examples-rest-api服务的/fn-list/user-basic-info-list-by-role/{role}接口(接口源码:FnListController )来获取用户基本信息列表,并对该接口的响应数据进行列表字段重命名以满足我们想要的数据格式。
在本例子中我们不需要入参,全留空。
新增1个步骤step1,然后在步骤step1里新增1个请求request1,服务选择fizz-examples-rest-api,请求/fn-list/user-basic-info-list-by-role/admin接口。
配置要返回给前端的响应报文,这里配置了响应体有以下字段:
code:引用类型,值为步骤step1中请求request1的响应的code字段;
message:引用类型,值为步骤step1中请求request1的响应的message字段;
data:引用类型,值为步骤step1中请求request1的响应的data字段并用fn.list.rename函数对字段进行重命名。
直接调用/fn-list/user-basic-info-list-by-role/admin接口得到的响应如图所示。
测试接口得到响应如图所示。
从测试接口的响应可以看出服务编排接口已完成了对/fn-list/user-basic-info-list-by-role/admin接口的请求并正确对响应的data字段的列表进行了字段提取。
本例子在编排接口中调用底层fizz-examples-rest-api服务的/fn-list/user-basic-info-list-by-role/{role}接口(接口源码:FnListController )来获取用户基本信息列表,并对该接口的响应数据进行列表字段移除以满足我们想要的数据格式。
在本例子中我们不需要入参,全留空。
新增1个步骤step1,然后在步骤step1里新增1个请求request1,服务选择fizz-examples-rest-api,请求/fn-list/user-basic-info-list-by-role/admin接口。
配置要返回给前端的响应报文,这里配置了响应体有以下字段:
code:引用类型,值为步骤step1中请求request1的响应的code字段;
message:引用类型,值为步骤step1中请求request1的响应的message字段;
data:引用类型,值为步骤step1中请求request1的响应的data字段并用fn.list.removeFileds函数移除role、nickname、sex字段。
直接调用/fn-list/user-basic-info-list-by-role/admin接口得到的响应如图所示。
测试接口得到响应如图所示。
从测试接口的响应可以看出服务编排接口已完成了对/fn-list/user-basic-info-list-by-role/admin接口的请求并正确对响应的data字段的列表进行了字段移除。
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/
作者:ZHONG.J