Malla文档

构建后端接口

在原生表中存储数据,并通过服务端工作流、Webhook 和定时任务对外提供。

用户指南
高级30 分钟

你将构建: 一张反馈表,带有读取和添加数据行的公开 API、一个接收其他工具反馈的 Webhook、一份每日报告,以及一个列出反馈的页面

请先阅读: 编辑器导览用工作流构建交互页面

在本教程中,你将不离开编辑器就构建一个小型后端。你会把反馈存储在原生表中,通过 HTTP 接口对外提供,用 Webhook 接收来自其他工具的反馈,并按计划每天给自己发送一份汇总。最后,站点上的一个页面会通过该接口列出所有反馈。

构建后端接口视频即将推出。下面的文字步骤已涵盖全部内容。
构建后端接口· 10 分钟

创建表

  1. 添加一张表

    从左侧边栏底部打开 Tables 工作区。点击 Tables 旁的 New,输入 feedback,然后按 ↵。表会在 Schema 标签页中打开,带有一个文本列 title。

  2. 添加列

    点击两次 Add column。把第一列命名为 message,类型保持 Text。把第二列命名为 rating,类型设为 Number。为 title 和 rating 勾选 Required。

    每一行还会自动带有 id、createdAt 和 updatedAt,所以你无需添加它们。

  3. 添加写入规则

    在 Row rules 下,在 Write 中输入 row.rating >= 1 && row.rating <= 5。现在访客和工作流只能保存 1 到 5 的评分。Read 留空,所有人都可以读取。点击 Save schema。

  4. 手动添加一行

    切换到 Rows 标签页,点击 Add row。填写标题、留言和评分,然后点击面板中的 Add row。在编辑器中的修改会跳过行规则,因为站点归你所有。

检查点

feedback 表的 Rows 标签页显示一行数据,表头显示 Rules 徽标。

用接口读取数据行

  1. 创建服务端工作流

    打开 Logic 工作区,把顶部的开关从 Client 切换到 Server。点击 +(Add server workflow),选择 HTTP endpoint。把工作流命名为 List feedback。

  2. 设置触发器

    在 Trigger 中,把 Method 设为 GET,Path 设为 /feedback,Who can call it 设为 Public。字段下方的提示会显示地址:你站点上的 /api/feedback。

  3. 查询表

    点击 Add step,在 Tables 下选择 Query table。在 Table 中输入 feedback;工作流通过名称或 id 查找表。把 Limit 设为 20。步骤卡片会显示它的 id:s1。

  4. 返回数据行

    点击 Add step,在 Server 下选择 Return。把 Value 设为 steps.s1.rows。Return 的值就是接口的响应。

  5. 测试

    点击 Test run。运行面板会实时显示每个步骤的结果和耗时;Return 步骤会显示你的那一行。每次运行都保存在 Runs 下。

用接口添加数据行

  1. 创建 POST 接口

    再添加一个名为 Add feedback 的 HTTP endpoint 工作流。把 Method 设为 POST,Path 设为 /feedback,Who can call it 设为 Public。GET 和 POST 可以共用一个路径。

  2. 插入数据行

    添加一个 Insert row 步骤,Table 为 feedback,Values 为 { title: input.title, message: input.message, rating: input.rating }。请求的 JSON 正文以 input 的形式传入。

  3. 返回新行

    添加一个 Return 步骤,Value 为 steps.s1,即插入的行及其 id。

  4. 用示例输入测试

    在 Test input 中输入 { "title": "Fast support", "message": "Answered in an hour", "rating": 5 },然后点击 Test run。接着把评分改为 9 再运行一次:写入规则会拒绝这一行,运行失败。

检查点

feedback 表的 Rows 标签页显示了测试运行写入的行,运行历史显示一次成功和一次失败。

接收 Webhook

  1. 创建 Webhook

    添加一个服务端工作流,选择 Webhook。命名为 Feedback webhook,把 Path 设为 /webhooks/feedback。Webhook 始终响应 POST。

  2. 保存负载

    添加一个 Insert row 步骤,Table 为 feedback,Values 与之前相同。Webhook 的负载以 input 的形式传入。

发送每日报告

  1. 创建定时任务

    添加一个服务端工作流,选择 Schedule。命名为 Daily report,点击 Every day at 09:00 预设。定时任务使用 UTC 时间,字段下方的提示会把计划复述给你。

  2. 找出低评分

    添加一个 Query table 步骤,Table 为 feedback,Filter 为 [{ column: 'rating', op: 'lte', value: 2 }]。

  3. 给自己发邮件

    添加一个 Send email 步骤。把 To 设为 'you@example.com',Subject 设为 Daily feedback,Text 设为表达式 steps.s1.rows.length + ' ratings of 2 or less'。点击 Test run 立即收到邮件。

发布并调用接口

  1. 发布到预发布环境

    服务端工作流在编辑时自动保存,但只有发布后才会上线。点击工具栏中的 Publish,保持选中 Staging 并确认。从现在起,定时任务每天都会在预发布环境中运行。

  2. 在终端中调用

    运行 curl https://<your-staging-address>/api/feedback。返回的 JSON 包含运行 id、运行状态,以及 result 中的数据行。

在页面上显示反馈

  1. 连接你站点的 API

    打开 Data 工作区,点击 Integrations 旁的 +(Add integration),选择 REST API。把基础 URL 设为你的预发布地址,点击 Create integration。

  2. 创建查询

    点击 Queries 旁的 +(Add query),命名为 feedback。选择你的集成和 Request 操作。在 Input 中把路径设为 /api/feedback。把 Response path 设为 result,保持 When it runs 为 Client,然后点击 Run。

  3. 列出数据行

    在页面上插入一个 Collection list。在 Collection list 分区中,把 Source 设为 Expression,Items 设为 queries.feedback.data。在条目内,把一段文本绑定到 item.title,另一段绑定到 item.message。

完成

页面列出了表中的反馈,数据通过你自己的接口读取。来自 POST 接口或 Webhook 的新行会在下次加载时出现。

你学到了什么

  • 原生表有结构、数据浏览器,以及作用于访客和工作流的行规则。
  • 服务端工作流由 HTTP 接口、Webhook 或定时任务启动,Return 设置响应内容。
  • Test run 用示例输入运行草稿并显示每个步骤;发布后工作流才会上线。

继续学习后面的教程,或阅读本教程背后的指南: