用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 集成开发非常有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 栈( stack )学习

目录 1.栈 2.模拟栈 1.1.入栈( push ) 1.2.出栈( pop ) 1.3.获取栈顶元素( top ) 3.直接使用栈( stack ) 3.1.导入头文件并创建栈 3.2.栈的操作 3.2.1.入栈( push ) 3.2.2.出栈( pop ) 3.2.3.获取栈顶元素( top ) 3.2.4.获取栈中元素个数( size ) 3.2.5.判断栈是否…

代码随想录算法训练营day8 | 344.反转字符串、541.反转字符串 II、卡码网:54.替换数字

文章目录 344.反转字符串思路 541.反转字符串 II思路 卡码网:54.替换数字思路复习:字符串 vs 数组 总结 今天是字符串专题的第一天,主要是一些基础的题目 344.反转字符串 建议: 本题是字符串基础题目,就是考察 revers…

docker挂载部署reids6.2.1

1.拉取镜像 docker pull redis:6.2.12.创建挂在目录(根据自己要求修改具体目录) mkdir -p /home/admin/redis/{data,conf}3.在/home/admin/redis/conf目录下创建redis.conf文件 cd /home/admin/redis/conf touch redis.conf4.复制下面文本到redis.conf…

浅析JWT原理及牛客出现过的相关面试题

原文链接:https://kixuan.github.io/posts/f568/ 对jwt总是一知半解,而且项目打算写个关于JWT登录的点,所以总结关于JWT的知识及网上面试考察过的点 参考资料: Cookie、Session、Token、JWT_通俗地讲就是验证当前用户的身份,证明-…

不断把别人“装”进我们的灵魂口袋

嘿,朋友们!今天我们来聊聊一种超酷的能量——本色示人。这不是什么秘密武器,但它比任何超能力都来得实在。 第一部分:本色示人,能量界的“超级赛亚人” 1.1 坦诚的超能力 想象一下,如果你的内心强大到可以…

Window部署Ollama+Qwen2.0+Open-WebUI

文章目录 Windows下安装Docker安装Docker检查是否安装成功, 出现版本即为安装成功安装Ollama启动 Ollama 并拉取模型(选做) 修改默认地址和端口(选做) Ollama 进行跨域配置安装open-webui Windows下安装Docker 准备条件 开启Hyper-V,在“启用或关闭Windows功能”里…

C语言 #指针数组 #数组指针 #数组参数、指针参数

文章目录 前言 一、指针数组 1、概念: 2、指针数组有什么用呢? 二、数组指针 1、数组指针的定义 2、数组名与 &数组名 的区别 3、数组指针如何初始化? 4、数组指针的用法 三、根据代码区分 指针数组 和 数组指针 四、数组参数、指针参数 …

Shell编程之正则表达式与文本三剑客

目录 一、正则表达式 1.引言--什么是正则表达式 1.1正则表达式的功能 2.基础正则表达式(BRE) 2.1特殊字符 2.2定位符 2.3非打印字符 3.扩展正则表达式(ERE) 4.元字符操作的案列 二、命令小工具 1.cut:列截取工具 2.sort排序 …

【Android】使用ViewPager2与TabLayout实现顶部导航栏+页面切换

【Android】使用ViewPager2与TabLayout实现顶部导航栏+页面切换 TabLayout与ViewPager2概述 TabLayout TabLayout 是 Android 支持库中的一个组件,它是 Design 支持库的一部分。TabLayout 提供了一个水平的标签页界面,允许用户在不同的视图…

CogVideo 实测,智谱「清影」AI视频生成,全民免费,连 API 都开放了!

不得不说,AI 视频生成界最近非常火热~ 前有快手「可灵」开放内测,一下子带火了老照片修复,全网刷屏: 怕是你还没拿到内测资格,被称为 “国货之光” 的「可灵」就结束了免费无限量模式。每天只有66点的免费额度&#x…

鸿蒙(API 12 Beta2版)【创建NDK工程】

创建NDK工程 下面通过DevEco Studio的NDK工程模板,来演示如何创建一个NDK工程。 说明 不同DevEco Studio版本的向导界面、模板默认参数等会有所不同,请根据实际工程需要,创建工程或修改工程参数。 通过如下两种方式,打开工程创…

2024-07-27 Unity Excel —— 使用 EPPlus 插件读取 Excel 文件

文章目录 1 前言2 项目地址3 使用方法3.1 写入 Excel3.2 读取 Excel3.3 读写 csv 文件 4 ExcelSheet 代码 1 前言 ​ 前几日,一直被如何在 Unity 中读取 Excel 的问题给困扰,网上搜索相关教程相对古老(4、5 年以前了)。之前想用 …

【openavis】明厨亮灶算法仓

明厨亮灶算法仓主要用于学校食堂,餐厅等饮食卫生安全监管场景,目前包含的算法如下: 算法类型 算法卡片 明厨亮灶算法仓 老鼠检测 垃圾桶未盖 厨师服检测 厨师帽检测 口罩检测 手套检测 动火离人 1. 算法规格介绍: 算…

基于STM32瑞士军刀--【FreeRTOS开发】学习笔记(一)|| RISC / 底层代码执行步骤 / 汇编指令

本篇文章基于韦东山老师讲课笔记和自己理解编写。 RISC ARM芯片属于精简指令集计算机(RISC:Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点: ① 对内存只有读、写指令 ② 对于数据的运算是在CPU内部实现 …

你在找提升效率的解决方案还是追求效果的解决方案

企业在寻求“解决方案”时,最好先想清楚,你是想提升某项工作的效率,还是要改善某项工作的效果? 提升效率的解决方案主要是为了在保证质量的前提下提升某项确定工作的完成速度。以政务解决方案为例:当任何人都能通过移…

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据 📚MT6816相关资料(来自商家的相关资料): 资料:https://pan.baidu.com/s/1CAbdLBRi2dmL4D7cFve1XA?pwd8888 提取码:8888📍驱动代码编写&…

某量JS逆向

https://chat.sensetime.com/wb/chat 目录 一、发起请求 二、观察发现只有入参 __data__ 进行了加密,返回是明文 三、 观察JS调用栈 四、从JS中搜索 __data__ 五、使用XHR对Ajax请求进行断点 六、再次发起请求就会断点拦住请求 七、对XHR入口分析 八、逐个…

【C++】选择结构- 嵌套if语句

嵌套if语句的语法格式&#xff1a; if(条件1) { if(条件1满足后判断是否满足此条件) {条件2满足后执行的操作} else {条件2不满足执行的操作} } 下面是一个实例 #include<iostream> using namespace std;int main4() {/*提示用户输入一个高考分数&#xff0c;根据分…

花几千上万学习Java,真没必要!(二十九)

1、基本数据类型包装类&#xff1a; 测试代码1&#xff1a; package apitest.com; //使用Integer类的不同方法处理整数。 //将字符串转换为整数&#xff08;parseInt&#xff09;和Integer对象&#xff08;valueOf&#xff09;&#xff0c; //将整数转换回字符串&#xff08;…

【计算机网络】DNS命令练习与抓包分析实验

一&#xff1a;实验目的 1&#xff1a;掌握DNS缓存的清除方法&#xff0c;了解DNS缓存的作用和影响。 2&#xff1a;熟悉nslookup和dig等DNS查询工具的使用&#xff0c;理解DNS查询的基本原理和过程。 3&#xff1a;通过抓包和分析&#xff0c;深入了解DNS查询和响应消息的格…