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

news2024/11/24 7:32:31

引言

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.coloradmin.cn/o/1951350.html

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

相关文章

算法-BFS搜索

题目一 解题思路 比较标准的暴力搜索空间换时间的策略 二维数组map表示具体地图,far表示遍历过程中某点到起点的距离。 队列 q 表示在遍历过程中当前距离的所以节点坐标。 每次的节点寻找其上下左右四个方向可以继续前进的点(这里在过程中会发生两个…

Java之多线程-同步代码块

线程同步 Java中提供了线程同步的机制,来解决上述的线程安全问题。 Java中实现线程同步,主要借助synchronized关键字实现。 线程同步方式: 同步代码块 同步方法 锁机制 1)同步代码块 格式: //Object类及其子类…

Web网页端IM产品RainbowChat-Web的v7.1版已发布

一、关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIMSDK (Github地址) 的产品级移动端IM系统)。 ► 详细介绍:http://www.52im.net/thread-2…

研发(RD)注意事项 / 复杂项目规划、控制方法 PERT 和 CPM

注:机翻,未校对,去掉了原文中广告。 What Is Research and Development (R&D)? 什么是研发(R&D)? Investopedia / Ellen Lindner Research and Development An ongoing effort to develop or impr…

Spring Boot入门指南:留言板

一.留言板 1.输⼊留⾔信息,点击提交.后端把数据存储起来. 2.⻚⾯展⽰输⼊的表⽩墙的信息 规范: 1.写一个类MessageInfo对象,添加构造方法 虽然有快捷键,但是还是不够偷懒 项目添加Lombok。 Lombok是⼀个Java⼯具库,通过添加注…

Java | Leetcode Java题解之第283题移动零

题目&#xff1a; 题解&#xff1a; class Solution {public void moveZeroes(int[] nums) {int n nums.length, left 0, right 0;while (right < n) {if (nums[right] ! 0) {swap(nums, left, right);left;}right;}}public void swap(int[] nums, int left, int right)…

AI/机器学习(计算机视觉/NLP)方向面试复习3

1. Pooling 有哪些方式&#xff1f;pytorch的实现&#xff1f; Pooling可以分成&#xff1a;最大池化&#xff0c;平均池化&#xff0c;全局平均池化&#xff0c;随机池化&#xff0c;空间金字塔池化。 1. 最大池化&#xff08;Max Pooling&#xff09; 最大池化是最常用的池…

将Android Library项目发布到JitPack仓库

将项目代码导入Github 1.将本地项目目录初始化为 Git 仓库。 默认情况下&#xff0c;初始分支称为 main; 如果使用 Git 2.28.0 或更高版本&#xff0c;则可以使用 -b 设置默认分支的名称。 git init -b main 如果使用 Git 2.27.1 或更低版本&#xff0c;则可以使用 git symbo…

【Django】前端技术-网页样式表CSS

文章目录 一、申明规则CSS的导入方式行内样式内部样式外部样式 二、CSS的选择器1. 基本选择器标签选择器&#xff1a; 选择一类标签 标签{}类选择器 class&#xff1a; 选择所有class属性一致的表情&#xff0c;跨标签.类名{}ID选择器&#xff1a;全局唯一 #id名{} 2.层次选择器…

Element快速学习

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;JavaWeb关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 什么是Element&#xff1f; Element&#xff1a;它是由饿了么团队开发的一个…

cpp程序设计实践,类实现树链刨分以及计算几何类

程序设计要求 是某个cq高校期末程序设计实践作业&#xff0c;全部自己做的比较小众分值90。  试建立一个继承结构&#xff0c;以栈、队列为派生类&#xff0c;建立它们的抽象基类-Bag类&#xff0c;写出各个类的声明及定义&#xff0c;并实现如下功能&#xff1a;  统一命名…

华为高品质万兆园区体验保障技术白皮书

华为高品质万兆园区体验保障技术白皮书 - 华为企业业务 re 音视频会议已经成为企业办公的核心应用系统&#xff0c;尤其是高层会议的质量对企业的运营效率有很大影响&#xff0c;相 关的体验问题也是员工投诉的重灾区。但不同于传统的网络通断类问题,体验类问题涉及的范围大、…

高通QCC3081蓝牙芯片双CVC参数配置与优化指南

高通的QCC3081芯片搭载了领先的高通1-MIC、2-MIC、3-MIC CVC回声消除和噪声抑制技术&#xff0c;无论您身处何地&#xff0c;都能通过蓝牙立体声耳机或耳塞享受清晰的语音通话体验。无论是家中的生活噪音、街道的车流声还是人群的喧哗&#xff0c;这些背景噪声都不再是通话质量…

MATLAB基础:函数与函数控制语句

今天我们继续学习Matlab中函数相关知识。 API的查询和调用 help 命令是最基本的查询方法&#xff0c;可查询所有目录、指定目录、命令、函数。 我们直接点击帮助菜单即可查询所需的API函数。 lookfor 关键字用于搜索相关的命令和函数。 如&#xff0c;我们输入lookfor inpu…

vue-plugin-hiprint 打印 预览打印+静默打印

1.安装 npm install vue-plugin-hiprint npm i socket.io-client --save //为了静默打印 &#xff08;为此还需安装客户端&#xff09; 2…html页面 引入css <link rel"stylesheet" type"text/css" media"print" href"https://cdn.jsde…

MySQL高性能读写分离实战

介绍 我的上一篇文章实现了mysql的主从复制结构&#xff0c;今天这篇继续将如何实现读写分离。 读写分离是指&#xff1a;针对数据库的写操作&#xff08;插入、更新、删除等&#xff09;访问主数据库&#xff0c;读操作访问从数据库。 因为一般网站的读请求的数量是远远大于…

photoshop学习笔记——选区3 选区的变化

选区制作完成之后可以对选区进行变化 主要有&#xff1a; 反选&#xff1a;shift ctrl I 变换 修改&#xff1a; 边界 设置选区的边界大小 类似 CSS中的borderSize平滑 对选区的角进行平滑扩展 向外扩展选区收缩 向内收缩选区羽化 让边界变得过渡透明度 设置…

大数据学习之sparkstreaming

SparkStreaming idea中初步实现 Spark core: SparkContext 核心数据结构&#xff1a;RDD Spark sql: SparkSession 核心数据结构&#xff1a;DataFrame Spark streaming: StreamingContext 核心数据结构&#xff1a;DStream(底层封装了RDD)&#xff0c;遍历出其中的RDD即可进行…

docker 安装单机版redis

把这三个放上去 修改成自己的 按照自己需求来 照图片做 vim redis.conf vim startRedis.sh mv startRedis.sh deployRedis.sh sh deployRedis.sh docker run --privilegedtrue \ --name dev.redis --restartalways \ --network dev-net \ -v ./config/redis.conf:/etc/r…

Laravel:揭秘PHP世界中最优雅的艺术品

1. 引言 在PHP的世界里&#xff0c;框架如繁星般璀璨&#xff0c;但Laravel以其独特的魅力和优雅&#xff0c;成为了众多开发者心中的艺术品。本文将深入探讨Laravel为何能在众多PHP框架中脱颖而出&#xff0c;成为最优雅的选择。 1.1 Laravel的诞生背景 Laravel的诞生可以…