如何将邮递员请求转换为NiFi请求?

时间:2019-10-17 16:21:01

标签: rest oauth-2.0 postman apache-nifi adobe-analytics

我不介意您是否使用非Adobe Analytics的另一个API中的示例。我只需要知道为了成功将Postman请求转换为NiFi请求所必须遵循的模式。

在成功创建通过Postman从Adobe Analytics中提取报告的请求之后,我很难将这些Postman请求迁移到NiFi。我还没有找到具体的用例来明确说明如何逐步执行此类任务。

我正在尝试在NiFi上构建一个后端,以高效,健壮的方式处理来自Adobe Analytics的多个数据提取。那就是不必自己创建所有必需的脚本。但是,与REST API和NiFi案例相比,有关REST API和Postman案例的文档更多。

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

Postman request

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

Body of request

如果可能的话,我想逐步了解屏幕截图:

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

如您所见,问题主要涉及NiFi中的属性设置以及处理器选择。我已经尝试配置一些处理器,但似乎无法获得正确的属性设置,或者可能是选择了错误的处理器。

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

对于已经熟悉NiFi和API请求的用户来说,这很容易完成,但事实证明,这对我来说具有挑战性。希望这将帮助希望通过使用NiFi而不是手动进行构建更多健壮管道的其他用户。

谢谢。

1 个答案:

答案 0 :(得分:1)

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

步骤1。。创建一个名为GenerateFlowFile的处理器。您唯一需要修改的属性是自定义文本。将整个JSON请求粘贴到那里,就像在Postman中一样。在这种情况下,我使用的是上面问题中显示的JSON。将持续时间设置为10秒或更长时间是一个好主意。

Generate FlowFile

步骤2。创建一个名为InvokeHTTP的处理器。然后修改下面的屏幕快照中显示的6个属性。使用与Postman中相同的授权详细信息。经过测试后,请确保从Postman复制Bearer令牌。另外,不要忘记同时设置HTTP MethodRemote URLContent-Type

InvokeHttp1 InvokeHttp2

步骤#3。最后,添加几个LogAttribute处理器来存储InvokeHTTP的输出。这些LogAttribute处理器之一应存储成功的响应。另一个可以用于失败,原始,重试和不重试。或者,您可以为每个输出创建LogAttribute

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

General data flow

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