NIFI使用InvokeHTTP发送http请求

这篇具有很好参考价值的文章主要介绍了NIFI使用InvokeHTTP发送http请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

这里介绍四种平时常用的http请求方法:GET、POST、PUT、DELETE。

在官方的介绍文档中关于InvokeHTTP处理器的描述是这么说的:

An HTTP client processor which can interact with a configurable HTTP Endpoint. The destination URL and HTTP Method are configurable. FlowFile attributes are converted to HTTP headers and the FlowFile contents are included as the body of the request (if the HTTP Method is PUT, POST or PATCH).

大致意思是说:这是一个可以与 HTTP 端点交互的 HTTP 客户端处理器。处理器中的 URL 和 HTTP Method是可以配置的。处理器中的属性会转换为 HTTP的请求头,如果请求方法是 PUT、POST 或 PATCH那么处理器的内容将作为请求的正文(请求体)包含在内。

测试接口

这里给了几个处理器测试用到的接口,主别对应GET、POST、PUT、DELETE请求,测试的代码不涉及业务逻辑,只是简单用来配合测试处理器使用。

package com.example.common.resp;

import com.example.common.enums.RespEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@AllArgsConstructor
@NoArgsConstructor
@Data
public class Result {
    private Integer code;
    private String message;
    private Object data;


    // 省略部分代码。。。

    public static Result ok(Object data) {
        return ok(RespEnum.SUCCESS.getCode(), RespEnum.SUCCESS.getMessage(), data);
    }

}



=====================================================================================
测试接口
=====================================================================================



package com.example.redis.controller;

import com.alibaba.fastjson2.JSONObject;
import com.example.common.resp.Result;
import org.springframework.web.bind.annotation.*;

import java.util.Map;


@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping("/{id}")
    public Result getById(@PathVariable String id, @RequestParam Map<String, Object> query) {
        JSONObject res = new JSONObject();
        res.put("method", "GET");
        res.put("desc", "这个是get方法");
        res.put("id", id);
        res.put("query", query);
        return Result.ok(res);
    }

    @PostMapping("")
    public Result add(@RequestBody JSONObject body) {
        JSONObject res = new JSONObject();
        res.put("method", "POST");
        res.put("desc", "这个是post方法");
        res.put("body", body);
        return Result.ok(res);
    }

    @PutMapping("/{id}")
    public Result editById(@PathVariable String id, @RequestBody JSONObject body) {
        JSONObject res = new JSONObject();
        res.put("method", "PUT");
        res.put("desc", "这个是put方法");
        res.put("id", id);
        res.put("body", body);
        return Result.ok(res);
    }

    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable String id) {
        JSONObject res = new JSONObject();
        res.put("method", "DELETE");
        res.put("desc", "这个是delete方法");
        res.put("id", id);
        return Result.ok(res);
    }
}

发送GET请求

添加处理器:InvokeHTTP

点击工具栏左上角的Processor拖拽到画布中,筛选出InvokeHTTP处理器添加到画布中

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

配置处理器

双击添加的处理器,切换到SETTINGS,给处理器起个名字

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

起好名字后切换到PROPERTIES,配置以下内容,最后点击APPLY

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

添加自定义请求头

如果需要给请求头添加自定义属性的话,直接点击右上角的加号+添加即可,例如我这里添加一个myToken的请求头,这个时候发送的请求头里面便会携带该参数

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

测试处理器

方便测试,将InvokeHTTP处理器设置为10秒执行一次

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

同理添加LogAttribute处理器到画布中

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

修改LogAttribute处理器的配置,将PROPERTIES选项卡中Log Payload的属性值改为true

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

连接两个处理器,关联关系选择Response,最后点击ADD

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

将第一个InvokeHTTP处理器自身的RELATIONSHIPS除了Response之外全部选择terminate

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

将第二个LogAttribute处理器自身的的RELATIONSHIPS选择terminate

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

处理器全部显示如图所示则表示没问题,可以运行了

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

启动两个处理器,在画布空白位置鼠标右键,选择Start

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

在nifi的日志中可以看到每隔十秒钟便会打印一次接口返回的结果

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

发送POST请求

发送POST请求携带请求体数据我们需要借助另外一个处理器:GenerateFlowFile

添加处理器:GenerateFlowFile

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

配置处理器

双击添加的处理器,在SETTINGS选项卡中给处理器起个名称

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

切换到PROPERTIES选项卡,然后分别配置Custom Text和Mime Type两个属性的值,其他属性的值默认即可。

Custom Text:(官方解释)If Data Format is text and if Unique FlowFiles is false, then this custom text will be used as content of the generated FlowFiles and the File Size will be ignored。通俗的说就是如果Custom Text中的值是文本类型的并且Unique FlowFiles属性的值是false,则Custom Text中的值会当做流文件的内容,这样Custom Text中的值传到下一个处理器InvokeHTTP的时候便会作为请求体数据传到接口中。

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

添加处理器:InvokeHTTP

和发送GET请求一样,添加InvokeHTTP处理器,然后配置以下内容,post请求中的请求体来自于上一个处理器的内容

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

测试处理器

将第一个处理器GenerateFlowFile和第二个处理器InvokeHTTP连接,关联关系选择success

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

继续将第二个处理器InvokeHTTP和之前添加过的LogAttribute处理器进行连接,关联关系选择Response

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

同样的将InvokeHTTP处理器自身的RELATIONSHIPS除了Response之外全部选择terminate

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

同样的方便测试,将第一个处理器GenerateFlowFile设置为10秒执行一次,然后将POST方法对应的三个处理器分别启动(鼠标放到对应的处理器上然后右键选择Start启动)

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

查看nifi的日志,可以看到每隔十秒钟便会打印一次接口返回的结果

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

发送PUT请求

put请求和post请求是类似,处理器按照post请求的重新添加一遍即可,只需要将InvokeHTTP处理器里面的请求方法改为PUT,URL改为对应的请求路径即可。这里不再重复添加,下面是添加好之后的

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

测试结果

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

发送DELETE请求

put请求和get请求是类似,处理器按照get请求的重新添加一遍即可,只需要将InvokeHTTP处理器里面的请求方法改为DELETE,URL改为对应的请求路径即可。这里不再重复添加,下面是添加好之后的

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

测试结果

NIFI使用InvokeHTTP发送http请求,NIFI,nifi,http

 结束语

以上便是NIFI中关于InvokeHTTP的使用,如果有问题欢迎大家评论。文章来源地址https://www.toymoban.com/news/detail-701221.html

到了这里,关于NIFI使用InvokeHTTP发送http请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049

    首先看一下整体流程,可以看到这里用的PutHbaseJson处理器,把数据导入到 hbase中的 注意这里也可以使用PutSql导入数据,通过phoenix的jdbc驱动,然后把数据利用PutSql处理器导入到 Hbase中,但是我这里的时候报错了,然后一直没解决,所以最后用了PutHbaseJson处理器,把数据存入到Hbase中去.  

    2024年02月06日
    浏览(34)
  • docker安装Apache NIFI

    系统:CentOS7.9 nifi版本:1.23.2 nifi的镜像比较大,大概有2G左右,下载时间根据个人网速而定 查看下载好的镜像 创建挂载目录的目的是为了将镜像内部的数据挂载到宿主机,防止容器不小心删掉导致数据丢失 目的是为了将容器中的数据复制到宿主机对应的挂载目录中 命令中

    2024年02月09日
    浏览(77)
  • nifi 映射ip部署报错

    nifi1.24.0 在arm架构,双ip部署报错问题解决 System Error The request contained an invalid host header [192.168.1.11:8888] in the request [/nifi/]. Check for request manipulation or third-party intercept. Valid host headers are [empty] or: 127.0.0.1 127.0.0.1:8888 localhost localhost:8888 [::1] [::1]:8888 fdz57 fdz57:8888 192.168.1.12 192.168.1.12

    2024年02月04日
    浏览(72)
  • 【大数据】Apache NiFi 数据同步流程实践

    初衷 :对于一些新接触 Apache NIFI 的小伙伴来说,他们急于想体验 NIFI,恨不得直接找到一篇文章,照着做就直接能够解决目前遇到的需求或者问题,回想当初的我,也是这个心态。其实这样的心态是不对的。好多加入 NIFI 学习群的新手同学都会有这个问题,一些基本的概念和

    2024年02月06日
    浏览(42)
  • 【大数据】Apache NiFi 助力数据处理及分发

    简单的说,NiFi 就是为了解决不同系统间数据自动流通问题而建立的。虽然 dataflow 这个术语在各种场景都有被使用,但我们在这里使用它来表示不同系统间的自动化的可管理的信息流。自企业拥有多个系统开始,一些系统会有数据生成,一些系统要消费数据,而不同系统之间

    2024年02月07日
    浏览(41)
  • 大数据NiFi(二十):实时同步MySQL数据到Hive

    文章目录 实时同步MySQL数据到Hive 一、开启MySQL的binlog日志 1、登录mysql查看MySQL是否开启binlog日志

    2024年02月03日
    浏览(31)
  • 【中危】 Apache NiFi 连接 URL 验证绕过漏洞 (CVE-2023-40037)

    Apache NiFi 是一个开源的数据流处理和自动化工具。 在受影响版本中,由于多个Processors和Controller Services在配置JDBC和JNDI JMS连接时对URL参数过滤不完全。使用startsWith方法过滤用户输入URL,导致过滤可以被绕过。攻击者可以通过构造特定格式来绕过连接URL验证,可能造成数据泄露

    2024年02月12日
    浏览(35)
  • Apache NiFi and Apache Flink: A Deep Dive into RealTime Stream Processing

    随着数据量的增长,实时数据处理变得越来越重要。实时流处理是一种处理大规模实时数据流的技术,它可以在数据到达时进行处理,而不是等待所有数据收集后进行批量处理。这种技术在各种应用场景中都有广泛的应用,例如实时监控、金融交易、物联网等。 Apache NiFi和

    2024年02月22日
    浏览(34)
  • 使用Go发送HTTP POST请求

    在Go语言中,我们可以使用 net/http 包来发送HTTP POST请求。以下是一个简单的示例,展示了如何使用Go发送HTTP POST请求并获取响应。 go 复制代码 package  main import  ( \\\"bytes\\\"   \\\"fmt\\\"   \\\"io/ioutil\\\"   \\\"net/http\\\"   ) func   main ()  { // 创建一个HTTP客户端 client := http.Client{} // 创建一个POST请求

    2024年01月23日
    浏览(36)
  • 使用Go发送HTTP GET请求

    在Go语言中,我们可以使用 net/http 包来发送HTTP GET请求。以下是一个简单的示例,展示了如何使用Go发送HTTP GET请求并获取响应。 go 复制代码 package  main import  ( \\\"fmt\\\"   \\\"io/ioutil\\\"   \\\"net/http\\\"   ) func   main ()  { // 创建一个HTTP客户端 client := http.Client{} // 创建一个GET请求 req, err :=

    2024年01月23日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包