当前位置: 首页 > 知识库问答 >
问题:

使用具有不同URL的NiFi循环API

笪建章
2023-03-14

我是一个使用NIFI的大一新生。下面的NiFi dataflow从固定URL上的GET请求中获取数据,但是我的endpoint有一组参数来获取部分数据,例如页面ID。我希望避免为稍微不同的请求URL创建相同的工作流。

在API中,我可以请求可用的页面列表,我希望使用这样的请求的结果开始循环下面的工作流。我该怎么做??

共有1个答案

微生昌勋
2023-03-14

最简单的方法可能是添加表达式语言语句来参数化invokehttp中的URL,然后用Groovy或JRuby将executescript(Cookbook)放在上面(不要使用Jython!)脚本生成具有与参数名称对应的属性的flowfiles。

这是一个简单的脚本,它将为每个页面生成一个url请求,其中包含一个名为tag的参数:

def pages = 10

1.upto(pages) { page ->
  def ff = session.create();
  ff = session.putAttribute(ff, "tag", "articles")
  ff = session.putAttribute(ff, "page", page.toString())
  session.transfer(ff, REL_SUCCESS)
}

然后,这些属性在表达式语言中显示为${tag}${page}。有关更复杂的脚本示例,请参见文档。您需要确保invokehttp被设置为将REST响应写入flowfile的正文(这是一个配置选项)。

 类似资料:
  • 我试图在任意年份的经济衰退中计算复利。以下promise函数计算可变投资组合的发展。 编辑的清晰度: const是一个从1到20循环一年的数组(是静态的) 三元()在每次运行的不同年份触发,导致不同年份的

  • 我使用以下程序集和c源(分别使用fasm和gcc)将一些程序集与一些c链接起来,以测试函数调用的成本 组件: c来源: 我得到的结果令人惊讶。首先,速度取决于我链接的顺序。如果我以的形式链接,典型的输出是 但是以相反的顺序链接,我得到了一个更像的输出: 他们的不同令人惊讶,但这不是我要问的问题。(此处有相关问题) 我要问的问题是,在第二次运行中,有函数调用的循环如何比没有函数调用的循环快,调用函数

  • 问题内容: 什么是执行以下操作的最佳方法: 但是,事情是我不想创建具有相同名称的对象,我想创建具有不同名称的对象,例如,我想将每个对象添加到列表中。做这个的最好方式是什么 ? 问题答案: 您无需为每个对象使用不同的名称。由于o1对象是在for循环中声明的,因此o1变量的范围仅限于for循环,并且在每次迭代过程中都会重新创建它…除非每次它将引用该迭代过程中创建的新对象。请注意,变量本身不存储在列表中

  • 问题内容: 我的应用程序的登录页面有两种状态:,。现在,我想在同一URL上显示这两种状态,但让控制器和模板取决于用户会话(用户是否登录?)。 有没有办法做到这一点? 问题答案: 您可以有一个基本状态来控制要加载的状态,并且可以简单地让声明该基本状态的子级没有url: 现在,在基本状态()的控制器中,您可以检查用户是否已登录,并用于加载适当的状态。 编辑 如所承诺的那样,正在努力工作。

  • 我有一个Java自动化测试框架。我需要这个代码在多个环境下运行,比如SIT、UAT和Prod,但所有这些环境都有不同的URL。 sit-config.properties 首页=XXX uat配置。属性 首页=YYY 马文简介 问题(编辑): 如何基于环境测试加载特定属性文件? 我有一个Java所有者库的例子,但是测试不是Maven。 http://www.testautomationguru.c

  • 我有一个的数组,它的值不同,称为。我想创建一个二维数组(称为),其中第一个维度的大小是数组的长度,第二个维度的大小是该索引处的整数值。我希望下面的代码能更容易理解我的问题。 我的实际代码,sizes数组更大,所以如果可能的话,我希望避免大量重复的代码行。 我是的新手,但我读过关于的文章。我想我可以创建一个函数来返回这个数组,但是我还没有让它工作。 我还认为我可以循环数组,并为每个创建一个具有该大小