如何将Postman请求转换为NiFi请求?

Sor*_*lac 0 rest adobe-analytics oauth-2.0 postman apache-nifi

我不介意您是否使用 Adob​​e Analytics 以外的其他 API 中的示例。我只需要知道必须遵循的模式才能成功将 Postman 请求转换为 NiFi 请求。

\n\n

在成功创建通过 Postman 从 Adob​​e Analytics 提取报告的请求后,我在将这些 Postman 请求迁移到 NiFi 时遇到了困难。我还没有\xc2\xb4t 能够找到具体的用例来明确解释如何逐步完成此类任务。

\n\n

我正在尝试在 NiFi 之上构建一个后端,以高效、稳健的方式处理从 Adob​​e Analytics 提取的多个数据。也就是说,不必自己创建所有必需的脚本。然而,有关 REST API 和 Postman 案例的文档比有关 REST API 和 NiFi 案例的文档还要多。

\n\n

在下面的屏幕截图中,我们可以看到 Postman 请求的样子。它需要 3 个标头和 1 个包含授权值(承载令牌)的临时标头。在“授权”选项卡中填写 OAuth 2.0 授权表单后,会自动生成此临时标头,如下所示

\n\n

邮递员请求

\n\n

然后,我们就有了请求的正文。此 json 文本是通过调试 Adob​​e Analytics 的工作区自动生成的,如下所示

\n\n

请求正文

\n\n

如果可能的话,我想通过屏幕截图逐步了解以下内容:

\n\n
    \n
  • 我应该在 NiFi 中使用哪种处理器才能获得与 Postman 中类似的响应?
  • \n
  • 我应该从处理器中添加/删除哪些属性才能使其正常工作?
  • \n
  • 我应该如何命名这些属性?
  • \n
  • 是否有我应该修改其值/名称的默认属性?
  • \n
\n\n

可以看到,问题主要涉及NiFi中的属性设置,以及处理器的选择。我已经尝试配置一些处理器,但我似乎没有获得正确的属性设置,或者我可能选择了错误的处理器。

\n\n

我正在使用 NiFi v1.6.0 和 Postman v7.8.0

\n\n

对于已经熟悉 NiFi 和 API 请求的用户来说,这很可能是一项简单的任务,但事实证明这对我来说具有挑战性。希望这将帮助其他希望使用 NiFi 而不是手动构建更强大管道的用户。

\n\n

谢谢。

\n

Sor*_*lac 6

只需 3 个 NiFi 处理器即可复制在 Postman 中运行的 REST API 请求。在此解决方案中,我们使用包含嵌套 JSON 请求的请求。这种简单方法的优点是减少了从 API 获得成功响应所需的配置量。也就是说,即使您使用复杂的 JSON 请求。在这种情况下, JSON 请求的正文通过处理器传递GenerateFlowFile,不需要任何其他处理器来解析/格式化请求。

步骤1。创建一个名为 的处理器GenerateFlowFile。您必须修改的唯一属性是自定义文本。将整个 JSON 请求粘贴到其中,就像在 Postman 中一样。在本例中,我使用与上面问题中显示的完全相同的 JSON。将“屈服持续时间”设置为 10 秒或更长是个好主意。

生成流文件

第2步。创建一个名为 的处理器InvokeHTTP。然后修改如下截图所示的6个属性。使用与 Postman 中相同的授权详细信息。确保在测试后从 Postman 复制 Bearer 令牌。另外,不要忘记设置HTTP Method,Remote URLContent-Type

调用Http1 调用Http2

步骤#3。最后,添加几个LogAttribute处理器来存储InvokeHTTP. 这些处理器之一LogAttribute应该存储成功的响应。另一种可用于Failure、Original、Retry 和 No-Retry。或者您可以LogAttribute为每个输出创建。

步骤4。现在,连接处理器并开始数据流!您应该开始看到数据填充Success LogAttribute。然后,您可以使用“数据来源”选项来查看传入的数据,并确认这与您之前从 Postman 获得的结果完全相同。

一般数据流

注意:这是一个简单、直接、“适合初学者”的解决方案,用于使用嵌套静态 JSON 复制 Postman API 请求。StackOverflow 中有更多解决方案可以处理更复杂的情况,例如动态 JSON。以下是其他一些帖子的列表: