将 JSON Header 和 Body 传递给 ApacheNifi 中的后续 InvokeHTTP 处理器
Passing JSON Header and Body to subsequent InvokeHTTP Processor in ApacheNifi
我正在尝试构建一个自动化流程,以从我拥有所有 REST API 的 SaaS 云平台导出配置文件。这是我正在做的
登录登录 API 获取令牌(我已经能够使用 InvokeHttp 处理器成功做到这一点)。我在响应 JSON 中得到令牌,如下所示
{ "access_token" : "<some_token_value>", "links" : [ { "rel" : "self", "href" : "https://ccadmin-xxxx.oracleoutsourcing.com/ccadmin/v1/login" } ], "token_type" : "bearer", "expires_in" : 300 }
我使用 EvaluateJSONPath 从 JSON 中提取令牌并添加动态 属性“令牌”以映射到 access_token JSON 我收到了回复。
evaluateJsonPath 的输出是一个属性“token”,其值为步骤 1 中的 access_token。
现在我正在为下一个 POST 调用准备 BODY,所以我使用 UpdateAttribute 处理器来定义我的属性。
接下来,我使用 AttributesToJSON 处理器将我在上一步中定义的属性转换为 JSON。这会将以下内容添加到其输出中的属性路径
JSON属性
{"mode":"standalone","filename":"profiles.json","format":"json","id":"Profiles"}
此外,步骤 1 中的令牌仍作为属性流动
- 接下来我将所有这些传递给我的第二个 InvokeHttp 处理器以调用批量导出。
现在,我想将此令牌作为 Header 传递,并将 JSON body 传递给 Invoke HTTP 处理器。所以我只是做了以下改变。向名为“Authorization”的 InvokeHTTP 添加一个动态属性并将值作为 Bearer ${token} 传递,我相信 body 将自动从先前处理器的属性中获取。
但是调用失败。有什么我想念的吗?我已经通过 POSTMAN 尝试了 运行 这个,一切都运行良好。
Nifi Flow Diagram
Input to 2nd InvokeHttp Processor
Second InvokeHttp POST processor
我想我明白了。我看到所有的东西都在流动,就像流动中的属性一样。 body 需要作为内容流动。所以我缩短了 UpdateAttribute 和 AttributeToJSON ,而是放置了一个 ReplaceText 处理器并将 JSON body 放在那里。我现在可以拨打成功了。
我正在尝试构建一个自动化流程,以从我拥有所有 REST API 的 SaaS 云平台导出配置文件。这是我正在做的
登录登录 API 获取令牌(我已经能够使用 InvokeHttp 处理器成功做到这一点)。我在响应 JSON 中得到令牌,如下所示
{ "access_token" : "<some_token_value>", "links" : [ { "rel" : "self", "href" : "https://ccadmin-xxxx.oracleoutsourcing.com/ccadmin/v1/login" } ], "token_type" : "bearer", "expires_in" : 300 }
我使用 EvaluateJSONPath 从 JSON 中提取令牌并添加动态 属性“令牌”以映射到 access_token JSON 我收到了回复。 evaluateJsonPath 的输出是一个属性“token”,其值为步骤 1 中的 access_token。
现在我正在为下一个 POST 调用准备 BODY,所以我使用 UpdateAttribute 处理器来定义我的属性。
接下来,我使用 AttributesToJSON 处理器将我在上一步中定义的属性转换为 JSON。这会将以下内容添加到其输出中的属性路径
JSON属性
{"mode":"standalone","filename":"profiles.json","format":"json","id":"Profiles"}
此外,步骤 1 中的令牌仍作为属性流动
- 接下来我将所有这些传递给我的第二个 InvokeHttp 处理器以调用批量导出。 现在,我想将此令牌作为 Header 传递,并将 JSON body 传递给 Invoke HTTP 处理器。所以我只是做了以下改变。向名为“Authorization”的 InvokeHTTP 添加一个动态属性并将值作为 Bearer ${token} 传递,我相信 body 将自动从先前处理器的属性中获取。
但是调用失败。有什么我想念的吗?我已经通过 POSTMAN 尝试了 运行 这个,一切都运行良好。
Nifi Flow Diagram
Input to 2nd InvokeHttp Processor
Second InvokeHttp POST processor
我想我明白了。我看到所有的东西都在流动,就像流动中的属性一样。 body 需要作为内容流动。所以我缩短了 UpdateAttribute 和 AttributeToJSON ,而是放置了一个 ReplaceText 处理器并将 JSON body 放在那里。我现在可以拨打成功了。