你将构建: 一张反馈表,带有读取和添加数据行的公开 API、一个接收其他工具反馈的 Webhook、一份每日报告,以及一个列出反馈的页面
请先阅读: 编辑器导览用工作流构建交互页面
在本教程中,你将不离开编辑器就构建一个小型后端。你会把反馈存储在原生表中,通过 HTTP 接口对外提供,用 Webhook 接收来自其他工具的反馈,并按计划每天给自己发送一份汇总。最后,站点上的一个页面会通过该接口列出所有反馈。
创建表
添加一张表
从左侧边栏底部打开 Tables 工作区。点击 Tables 旁的 New,输入
feedback,然后按 ↵。表会在 Schema 标签页中打开,带有一个文本列title。添加列
点击两次 Add column。把第一列命名为
message,类型保持 Text。把第二列命名为rating,类型设为 Number。为title和rating勾选 Required。每一行还会自动带有
id、createdAt和updatedAt,所以你无需添加它们。添加写入规则
在 Row rules 下,在 Write 中输入
row.rating >= 1 && row.rating <= 5。现在访客和工作流只能保存 1 到 5 的评分。Read 留空,所有人都可以读取。点击 Save schema。手动添加一行
切换到 Rows 标签页,点击 Add row。填写标题、留言和评分,然后点击面板中的 Add row。在编辑器中的修改会跳过行规则,因为站点归你所有。
feedback 表的 Rows 标签页显示一行数据,表头显示 Rules 徽标。
用接口读取数据行
创建服务端工作流
打开 Logic 工作区,把顶部的开关从 Client 切换到 Server。点击 +(Add server workflow),选择 HTTP endpoint。把工作流命名为
List feedback。设置触发器
在 Trigger 中,把 Method 设为 GET,Path 设为
/feedback,Who can call it 设为 Public。字段下方的提示会显示地址:你站点上的/api/feedback。查询表
点击 Add step,在 Tables 下选择 Query table。在 Table 中输入
feedback;工作流通过名称或 id 查找表。把 Limit 设为20。步骤卡片会显示它的 id:s1。返回数据行
点击 Add step,在 Server 下选择 Return。把 Value 设为
steps.s1.rows。Return 的值就是接口的响应。测试
点击 Test run。运行面板会实时显示每个步骤的结果和耗时;Return 步骤会显示你的那一行。每次运行都保存在 Runs 下。
用接口添加数据行
创建 POST 接口
再添加一个名为
Add feedback的 HTTP endpoint 工作流。把 Method 设为 POST,Path 设为/feedback,Who can call it 设为 Public。GET 和 POST 可以共用一个路径。插入数据行
添加一个 Insert row 步骤,Table 为
feedback,Values 为{ title: input.title, message: input.message, rating: input.rating }。请求的 JSON 正文以input的形式传入。返回新行
添加一个 Return 步骤,Value 为
steps.s1,即插入的行及其id。用示例输入测试
在 Test input 中输入
{ "title": "Fast support", "message": "Answered in an hour", "rating": 5 },然后点击 Test run。接着把评分改为9再运行一次:写入规则会拒绝这一行,运行失败。
feedback 表的 Rows 标签页显示了测试运行写入的行,运行历史显示一次成功和一次失败。
接收 Webhook
创建 Webhook
添加一个服务端工作流,选择 Webhook。命名为
Feedback webhook,把 Path 设为/webhooks/feedback。Webhook 始终响应POST。保存负载
添加一个 Insert row 步骤,Table 为
feedback,Values 与之前相同。Webhook 的负载以input的形式传入。
发送每日报告
创建定时任务
添加一个服务端工作流,选择 Schedule。命名为
Daily report,点击 Every day at 09:00 预设。定时任务使用 UTC 时间,字段下方的提示会把计划复述给你。找出低评分
添加一个 Query table 步骤,Table 为
feedback,Filter 为[{ column: 'rating', op: 'lte', value: 2 }]。给自己发邮件
添加一个 Send email 步骤。把 To 设为
'you@example.com',Subject 设为Daily feedback,Text 设为表达式steps.s1.rows.length + ' ratings of 2 or less'。点击 Test run 立即收到邮件。
发布并调用接口
发布到预发布环境
服务端工作流在编辑时自动保存,但只有发布后才会上线。点击工具栏中的 Publish,保持选中 Staging 并确认。从现在起,定时任务每天都会在预发布环境中运行。
在终端中调用
运行
curl https://<your-staging-address>/api/feedback。返回的 JSON 包含运行 id、运行状态,以及result中的数据行。
在页面上显示反馈
连接你站点的 API
打开 Data 工作区,点击 Integrations 旁的 +(Add integration),选择 REST API。把基础 URL 设为你的预发布地址,点击 Create integration。
创建查询
点击 Queries 旁的 +(Add query),命名为
feedback。选择你的集成和 Request 操作。在 Input 中把路径设为/api/feedback。把 Response path 设为result,保持 When it runs 为 Client,然后点击 Run。列出数据行
在页面上插入一个 Collection list。在 Collection list 分区中,把 Source 设为 Expression,Items 设为
queries.feedback.data。在条目内,把一段文本绑定到item.title,另一段绑定到item.message。
页面列出了表中的反馈,数据通过你自己的接口读取。来自 POST 接口或 Webhook 的新行会在下次加载时出现。
你学到了什么
- 原生表有结构、数据浏览器,以及作用于访客和工作流的行规则。
- 服务端工作流由 HTTP 接口、Webhook 或定时任务启动,Return 设置响应内容。
- Test run 用示例输入运行草稿并显示每个步骤;发布后工作流才会上线。
继续学习后面的教程,或阅读本教程背后的指南: