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处理器添加到画布中

配置处理器

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

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

添加自定义请求头

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

测试处理器

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

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

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

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

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

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

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

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

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

发送POST请求

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

添加处理器:GenerateFlowFile

配置处理器

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

切换到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的时候便会作为请求体数据传到接口中。

添加处理器:InvokeHTTP

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

测试处理器

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

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

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

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

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

发送PUT请求

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

测试结果

发送DELETE请求

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

测试结果

 结束语

以上便是NIFI中关于InvokeHTTP的使用,如果有问题欢迎大家评论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/102533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

敏感接口权限校验

前端校验 &#xff08;从前端或者从token里面拿一下&#xff09;&#xff0c;看一下用户有没有这个页面的权限&#xff08;但是一般不用&#xff0c;因为nodejs也可以写后端&#xff0c;但是放到前端去校验不安全&#xff09; 后端校验 需要梳理敏感数据接口&#xff0c;将这…

LeetCode 1004.最大连续1的个数

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 硬往题目介绍上边去想的话其实非常困难&#xff0c;如果换种方式思考就会简单许多。 若我们将思想转化为&#xff0c;找出最长的子串(里面含有的0的数量最大为k)&#xff0c;然后返…

Python 网页爬虫原理及代理 IP 使用

目录 前言 一、Python 网页爬虫原理 二、Python 网页爬虫案例 步骤1&#xff1a;分析网页 步骤2&#xff1a;提取数据 步骤3&#xff1a;存储数据 三、使用代理 IP 四、总结 前言 随着互联网的发展&#xff0c;网络上的信息量变得越来越庞大。对于数据分析人员和研究人…

vue3:3、项目目录和关键文件

关于vsvode的更改 <!-- 加上setup允许在script中直接编写组合式api --> <script setup> // 组件引入后直接用 import HelloWorld from ./components/HelloWorld.vue import TheWelcome from ./components/TheWelcome.vue</script><!-- 1、js放在最上面&am…

Nginx(动静分离、分配缓冲区、资源缓存、防盗链、资源压缩、IP黑白名单、大文件传输配置、跨域配置、高可用、性能优化)

Nginx&#xff0c;负载均衡&#xff0c;Http反向代理服务器&#xff0c;支持大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS 环境搭建 Nginx反向代理-负载均衡 首先通过SpringBootFreemarker快速搭建一个WEB项目&#xff1a;springboot-web-nginx&#xff0c;然后在该项目中&…

PlantUML入门教程:画时序图

软件工程中会用到各种UML图&#xff0c;例如用例图、时序图等。那我们能不能像写代码一样去画图呢&#xff1f; 今天推荐一款软件工程师的作图利器--PlantUML&#xff0c;它能让你用写代码的方式快速画出UML图。 一、什么是PlantUML&#xff1f; PlantUML是一个允许你快速作出…

全网超50万粉丝的Linux大咖良许,出书了!

全网超50万粉丝的Linux大咖良许 出书了&#xff01; 今天我们要说的就是这本由Linux领域头部号主&#xff0c;良许老师编写的这本《速学Linux&#xff1a;系统应用从入门到精通》 如果你是刚开始学习Linux的小白同学&#xff0c;相信你已经体会到与学习一门编程语言相比&…

简单斜率优化

凸壳取点 现在平面上有 n n n个点&#xff1a; ( x i , y i ) (x_i,y_i) (xi​,yi​) 现有一次函数&#xff1a; y k x b ykxb ykxb。 要求一次函数必须至少经过平面当中的一个点。则一次函数可以写作&#xff1a; y i k ⋅ x i b y_ik\cdot x_ib yi​k⋅xi​b 如果斜率…

NPM 常用命令(五)

目录 1、npm doctor 1.1 命令 1.2 描述 npm ping npm -v node -v npm config get registry which git 1.3 权限检查 1.4 验证缓存包的校验和 2、npm edit 2.1 命令 2.2 描述 2.3 配置 editor 3、npm exec 3.1 命令 3.2 描述 npx 与 npm exec 3.3 配置 pac…

SQL sever中用户管理

目录 一、用户管理常见方法 二、用户管理方法示例 2.1. 创建登录账户&#xff1a; 2.1.1 检查是否创建账户成功&#xff1a; 2.2. 创建数据库用户&#xff1a; 2.2.1检查用户是否创建成功&#xff1a; 2.3. 授予权限&#xff1a; 2.3.1授予 SELECT、INSERT 和 U…

Ubuntu安装NVIDIA显卡驱动

目录 0. 引言1. 方法1 - 使用系统自带渠道安装2. 方法2 - 手动安装2.1. 卸载原有显卡驱动2.2. 安装显卡驱动2.3. 补救措施 0. 引言 \qquad 第一次入坑的建议看一下这部分。如果说要问我什么时候应该给Ubuntu装显卡驱动&#xff0c;我建议新系统用户第一件事就是安装显卡驱动&am…

sklearn中make_blobs方法:聚类数据生成器

sklearn中make_blobs()方法参数&#xff1a; n_samples:表示数据样本点个数,默认值100 n_features:是每个样本的特征&#xff08;或属性&#xff09;数&#xff0c;也表示数据的维度&#xff0c;默认值是2。默认为 2 维数据&#xff0c;测试选取 2 维数据也方便进行可视化展示…