在后端世界中,构建基于 REST 的服务非常普遍。在无服务器世界中开发服务时,这是一种趋势,但它带来了很多痛苦。例如,我们需要用我们选择的语言编写一个函数,然后需要构建一个配置脚本,如云形成或terraform,以链接用于构建解决方案的服务集。
在本文中,我们将在 AWS lambda、API 网关和 PostgreSQL 数据库上构建基于 REST 的服务。关键部分是我们将完全使用低代码集成工具和运行时框架 Kumologica 开发它。
企业 ABC 公司的客户注册门户需要后端服务来存储数据。注册客户时,门户将调用基于 rest 的服务以插入客户信息。门户的管理页面具有列出客户记录的功能。
根据上面给出的设计,企业正在使用 AWS 云提供商及其 Lambda 服务来托管后端 REST API 服务。lambda 函数将使用 Kumologica 设计器和运行时框架开发,该框架在 Node.JS 上运行。lambda 函数需要与作为托管服务托管在外部的 PostgreSQL 数据库连接。
CREATE TABLE CUSTOMER(
NAME CHAR(50) PRIMARY KEY NOT NULL,
EMAIL CHAR(50) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50) NOT NULL
);
让我们开始实现解决方案,首先通过终端或 Windows 命令行使用命令打开 Kumologica 设计器。 kl open
npm i @kumologica/kumologica-contrib-sql
Display Name : [GET] /customers
Event Source : Amazon API Gateway
Verb : GET
URL : /customers
上述配置适用于列出所有客户的流。 4. 将组件面板中的记录器节点添加到画布,并将事件侦听器节点连接到该节点。提供以下日志消息。
Display Name : Log_Entry
Level : INFO
Message : Request received
Log format : String
Display Name : GetCustomers
Provider : Postgres
Host : <>
Port : 5432
Database : <>
Timeout : 10000
Username : <>
Password : <>
Query : SELECT * FROM CUSTOMER;
Display Name : Success
Response : Http Response
Status code : 200
Header > Content-Type : application/json
Payload : msg.payload.rows
客户列表的最终流程实现。
Display Name : [POST] /customers
Event Source : Amazon API Gateway
Verb : POST
URL : /customers
Display Name : Log_Entry
Level : INFO
Message : msg.payload
Log format : JSON
Display Name : AddCustomer
Provider : Postgres
Host : <>
Port : 5432
Database : <>
Timeout : 10000
Username : <>
Password : <>
Query : "INSERT INTO CUSTOMER( NAME, EMAIL , AGE , ADDRESS ) VALUES ('" & msg.payload.name & "','" & msg.payload.email & "'," & msg.payload.age & ",'" & msg.payload.address & "');"
Display Name : Success
Response : Http Response
Status code : 200
Header > Content-Type : application/json
Payload : msg.payload
客户列表的最终流程实现。
部署完成后,用于访问服务的完整 REST 终结点 URL 将显示在设计器终端中。您可以使用您选择的任何 REST 客户端测试终端节点。
从 Kumologica 设计器部署流时,设计器会自动将流打包为 lambda zip 以及 AWS 云形成脚本。该脚本由设计器的部署段生成。云形成脚本将流部署为基于节点.js AWS 函数,并通过 AWS API 网关公开该函数。如您所见,我们开发了这种无服务器 REST 服务,其编码非常少,脚本为零。