当前位置: 首页 > news >正文

用Postman Flows打造你的专属API:外部公开,轻松上手!

引言

Postman Flows 是一个使用 GUI 进行无代码 API 调用流程创建的服务。这篇文章我尝试使用 Flows 来构建将 Momento Topic 中的数据保存到 TiDB 的保存 API,因此想分享一些使用过程中的技巧等。

实现内容

将从 Momento Topics 配发的 JSON 数据保存到 TiDB 中。通过 Momento 使用 webhook 在数据发布时调用 API。保存到 TiDB 的过程是调用 TiDB 端提供的 API。简而言之,这类似于通过 Momento Topics 事件触发的 Lambda + API Gateway,但实际操作只是将接收到的 JSON 从左到右流转,因为入口和出口都是 REST API,所以使用 Postman 进行集中管理和测试会比较方便。

准备 - 将发送源 API 导入为 Postman 的集合

导入发送目标的 API 定义

如果将发送目标的 API 导入到 Postman 中,您可以利用 Postman 的变量定义,实现更灵活的处理(后续会详细介绍)。在这里,我们将读取 TiDB 的 API 定义。(关于 TiDB 端 API 的创建在此不作详述)

这个定义的形式是这样的,可以通过 OpenAPI 格式的 JSON 文件获取。

 通过导入这个定义,您可以将其作为集合导入到自己的工作区中。

将发送目标 API 的各种参数变量化

将 API 调用时设置的请求参数、请求体和认证信息等设置为变量。本次调用的 API 没有请求参数,仅有请求体。认证信息使用摘要认证。

首先设置认证信息。认证信息在集合的顶层进行设置。在这里,我们使用 {{PUBLIC_KEY}} 和 {{PRIVATE_KEY}} 进行设置。在 Postman 中,变量的格式为 {{变量名}}。这些变量可以在 Flows 中以及通过多种方法进行设置。

 对请求体使用变量进行定义。本次由于发送源和 JSON 的格式一致,因此决定直接使用发送源的 JSON,将其全部设置为变量。在具体的 API 的 body 标签下,选择 raw 并输入 {{rate_json}}。

 

 完成以上步骤后,请保存。

设置环境变量

接下来,将之前定义的三个变量 {{PUBLIC_KEY}}、{{PRIVATE_KEY}} 和 {{rate_json}} 设置为环境变量。创建用于 API 测试的 TEST 环境和用于生产的 PROD 环境。在 TEST 环境中,将 JSON 字符串设置为 {{rate_json}},而在 PROD 环境中,由于直接使用调用源的 body,这部分就不需要设置了。

 创建完成后,请务必保存。

 创建好环境变量后,选择相应的环境并运行 API 测试。在 API 界面的右上角有一个环境选择下拉菜单。在这里选择所需的环境。

最后只需执行测试即可。请检查 header 和 body 是否正确设置,并在控制台中查看结果。可以通过环境选择下拉菜单旁边的 Environment Quick Look 来确认环境变量是否正确设置。

 

创建 Flows

设置 API 调用

在 Flows 中进行新建操作,在 Start 后立即添加 API 调用。在 API 调用的下拉菜单中,可以选择之前创建的 rate_jpn 集合。系统会自动识别 body 的变量定义,并以变量形式显示。在这时,可以选择环境,因此选择 PROD 环境。

JSON 转换

调用源 Momento 传递的 body 的 JSON 定义如下所示。您需要从中提取 text 的 JSON,并将其设置为 rate_json

{"cache": "momento-exchange","topic": "rate","event_timestamp": 1703245656262,"publish_timestamp": 1703245656262,"topic_sequence_number": 418,"token_id": "","text": "{\"best_bid\":6594882,\"best_ask\":6598048,\"orig_timestamp\":\"2023-12-22T11:47:36.1833839Z\",\"timestamp\":\"2023-12-22T11:47:36.250Z\"}"
}

在这里出现了一个小问题。虽然不确定是否故意如此,但 Momento 发送的 JSON 似乎被解释为文本。这可能是因为请求头中没有指定 Content-Type,导致调试时遇到了一些困难。我们需要将以文本形式传递的 body 转换为 JSON。为了实现这一处理,Postman Flows 提供了 Evaluate 块。

在这个块中,可以使用 FQL 这种简易语言编写表达式。在这里,我们将编写一个将输入转换为 JSON 的表达式。

  1. 拖动 rate_json 左侧的连线,选择 Evaluate 块,并将 Evaluate 块的输入连接到 Start。
  2. 在 Evaluate 块中设置变量 input。路径可以为空。这样,整个 body 将被设置到 input 变量中。
  3. 编写 FQL 表达式:$jsonParse(input)
  4.  回到 rate_json 侧,将 text 设置为 rate_json

这样就完成了。

测试

为了调试,可以在 Start 和 API 调用的 Error 处设置 Log。传递给 Log 的输入将会输出到 input 中。 整体流程如下图所示。

 点击左下角的 Webhook URL 预览按钮,打开 API 测试界面。在 Body 中设置测试用的 JSON 并执行测试。

 也可以从 Flows 界面上查看执行结果。

此外,还可以在控制台中查看 API 调用和日志的内容。

 

发布

如果没有问题,点击 Webhook URL 下方的 Publish 按钮,即可将其部署到该 URL。可以从外部进行访问以进行确认。

总结

使用 Postman Flows 可以在无需编写代码的情况下创建涉及数据转换的 API 调用流程。此外,由于 Postman 平台的集成,您可以利用与 API 测试相同的变量,这大大提高了便利性。虽然这次是一个简单的示例,但通过使用块和 FQL 可以编写更复杂的转换,因此对于 API 集成开发非常有效。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【python_将列表拆分成几组,分批次写入excel】
  • 美食聚焦 -- 仿大众点评项目技术难点总结
  • langchain 入门指南 - 文本分片及向量化
  • 给定日期计算时间(2025新年倒计时)
  • 无涯·问知财报解读,辅助更加明智的决策
  • Vue常用的指令都有哪些?都有什么作用?什么是自定义指令?
  • SSRF学习笔记
  • WordPress原创插件:自定义文章标题颜色
  • 【ESP8684————固件烧录说明、调试记录(1)】
  • OWASP ZAP:一款功能强大的开源Web安全扫描工具
  • 硬件工程师笔面试真题汇总
  • freertos的学习cubemx版
  • Web前端:HTML篇(四)头部head标签与样式表的导入
  • c语言第四天笔记
  • 萝卜快跑:自动驾驶的先锋与挑战
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 2019.2.20 c++ 知识梳理
  • const let
  • Fastjson的基本使用方法大全
  • Java程序员幽默爆笑锦集
  • Js基础知识(四) - js运行原理与机制
  • k个最大的数及变种小结
  • Linux下的乱码问题
  • Objective-C 中关联引用的概念
  • React中的“虫洞”——Context
  • springboot_database项目介绍
  • 关于List、List?、ListObject的区别
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 【干货分享】dos命令大全
  • Mac 上flink的安装与启动
  • Python 之网络式编程
  • ​Java并发新构件之Exchanger
  • #vue3 实现前端下载excel文件模板功能
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)Controller接口控制器详解(三)
  • (循环依赖问题)学习spring的第九天
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转) 深度模型优化性能 调参
  • (转)socket Aio demo
  • (轉)JSON.stringify 语法实例讲解
  • *p++,*(p++),*++p,(*p)++区别?
  • .Net Redis的秒杀Dome和异步执行
  • .NET Remoting学习笔记(三)信道
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET命令行(CLI)常用命令
  • .Net中间语言BeforeFieldInit
  • .sdf和.msp文件读取
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)