我不介意您是否使用非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所示。
然后,我们有了请求的正文。此json文本是通过调试Adobe Analytics的工作区自动生成的,如here所示。
如果可能的话,我想逐步了解屏幕截图:
如您所见,问题主要涉及NiFi中的属性设置以及处理器选择。我已经尝试配置一些处理器,但似乎无法获得正确的属性设置,或者可能是选择了错误的处理器。
我正在使用NiFi v1.6.0和Postman v7.8.0
对于已经熟悉NiFi和API请求的用户来说,这很容易完成,但事实证明,这对我来说具有挑战性。希望这将帮助希望通过使用NiFi而不是手动进行构建更多健壮管道的其他用户。
谢谢。
答案 0 :(得分:1)
只需3个NiFi处理器即可复制可在Postman中使用的REST API请求。在此解决方案中,我们使用包含嵌套JSON请求的请求。这种简单方法的优点在于,它减少了从API获得成功响应所需的配置量。也就是说,即使您正在使用复杂的JSON请求。在这种情况下,JSON请求的 body 通过GenerateFlowFile
处理器传递,而无需任何其他处理器来解析/格式化请求。
步骤1。。创建一个名为GenerateFlowFile
的处理器。您唯一需要修改的属性是自定义文本。将整个JSON请求粘贴到那里,就像在Postman中一样。在这种情况下,我使用的是上面问题中显示的JSON。将持续时间设置为10秒或更长时间是一个好主意。
步骤2。创建一个名为InvokeHTTP
的处理器。然后修改下面的屏幕快照中显示的6个属性。使用与Postman中相同的授权详细信息。经过测试后,请确保从Postman复制Bearer令牌。另外,不要忘记同时设置HTTP Method
,Remote URL
和Content-Type
。
步骤#3。最后,添加几个LogAttribute
处理器来存储InvokeHTTP
的输出。这些LogAttribute
处理器之一应存储成功的响应。另一个可以用于失败,原始,重试和不重试。或者,您可以为每个输出创建LogAttribute
。
步骤4。现在,连接处理器并开始您的数据流!您应该开始看到数据填充了成功 LogAttribute
。然后,您可以使用“数据来源”选项来查看传入的数据,并确认这与您以前从Postman获得的结果完全相同。
注意:这是一个简单,直接的“面向初学者”解决方案,可使用嵌套的静态JSON复制Postman API请求。 StackOverflow中有更多解决方案可以解决更复杂的情况,例如动态JSON。以下是一些其他帖子的列表: