如何将 Postman 请求转换为 NiFi 请求?
How to convert a Postman request into a NiFi request?
我不介意您使用另一个 API 中不是 Adobe Analytics 的示例。我只需要知道我必须遵循的模式才能成功地将 Postman 请求转换为 NiFi 请求。
在成功创建通过 Postman 从 Adobe Analytics 提取报告的请求后,我很难将这些 Postman 请求迁移到 NiFi。我一直无法找到具体的用例来明确解释如何执行此类任务 step-by-step。
我正在尝试在 NiFi 之上构建一个后端,以高效且稳健的方式处理从 Adobe Analytics 中提取的多个数据。那不是必须自己创建所有必需的脚本。然而,关于 REST APIs 和 Postman 案例的文档多于关于 REST APIs 和 NiFi 案例的文档。
在下面的屏幕截图中,我们可以看到 Postman 请求的样子。它需要 3 headers 和 1 个临时 header,其中包括授权值(不记名令牌)。这个临时的header是在Authorization选项卡中填写OAuth 2.0授权表后自动生成的,如图here.
然后,我们有请求的body。此 json 文本是通过调试 Adobe Analytics 的工作区自动生成的,如图 here。
我想以 step-by-step 的方式了解以下内容,如果可能的话还附上截图:
- 我应该在 NiFi 中使用哪个处理器来获得与我在 Postman 中得到的类似的响应?
- 我应该 add/remove 处理器的哪些属性才能使它工作?
- 我应该如何命名这些属性?
- 是否有我应该修改其 value/name 的默认值 属性?
如您所见,问题主要涉及NiFi中的属性设置,以及处理器选择。我已经尝试配置一些处理器,但我似乎没有获得正确的属性设置,或者我可能选择了错误的处理器。
我正在使用 NiFi v1.6.0 和 Postman v7.8.0
对于已经熟悉 NiFi 和 API 请求的用户来说,这很可能是一项简单的任务,但事实证明这对我来说具有挑战性。希望这将帮助其他用户通过使用 NiFi 而不是手动构建更强大的管道。
谢谢。
只需要 3 个 NiFi 处理器就可以复制在 Postman 中工作的 REST API 请求。在此解决方案中,我们使用包含嵌套 JSON 请求的请求。这种简单方法的优点是它减少了从 API 获得成功响应所需的配置量。也就是说,即使您使用的是复杂的 JSON 请求。在这种情况下,JSON 请求的 body 通过 GenerateFlowFile
处理器传递,不需要任何其他处理器来 parse/format 请求。
步骤 #1. 创建一个名为 GenerateFlowFile
的处理器。您唯一需要修改的 属性 是 自定义文本 。将您的整个 JSON 请求粘贴到那里,就像在 Postman 中一样。在这种情况下,我使用与上面问题中显示的完全相同的 JSON。最好将 Yield Duration 设置为 10 秒或更长时间。
步骤 #2. 创建一个名为 InvokeHTTP
的处理器。然后修改下图所示的6个属性。使用您在 Postman 中使用的相同授权详细信息。确保在测试后从 Postman 复制 Bearer 令牌。另外,不要忘记设置 HTTP Method
、Remote URL
和 Content-Type
。
步骤 #3. 最后,添加几个 LogAttribute
处理器来存储 InvokeHTTP
的输出。这些 LogAttribute
处理器之一应该存储成功的响应。另一个可用于失败、原始、重试和不重试。或者您可以为每个输出创建 LogAttribute
。
第 4 步。现在,连接处理器并开始您的数据流!您应该开始看到数据填充 成功 LogAttribute
。然后您可以使用“数据来源”选项查看传入数据并确认这与您之前从 Postman 获得的结果完全相同。
注意:这是一个简单、直接的 "for starters" 解决方案,用于使用嵌套静态 JSON 复制 Postman API 请求。 Whosebug 中有更多解决方案可以处理更复杂的情况,例如动态 JSON。这是其他一些帖子的列表: