nifi发送http请求

该博客介绍了如何使用NiFi从Kafka消费者获取JSON数据,通过EvaluateJsonPath提取属性,将其转化为HTTP请求参数,然后通过InvokeHTTP发送GET或POST请求,并将响应保存到文件中。示例中,消费的JSON包含"id"和"userName"字段,请求路径为/ip:8080/test,返回的是user对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程概述:从kafka中消费json串,取json中的某几个属性值,作为参数进行http请求(GET请求或POST请求),接收返回参数存入文件,总流程如下。
这里写图片描述
ConsumeKafka:消费kafka中json串,如:
{“id”:”111”,”userName”:”你好”}
EvaluateJsonPath:通过添加Property取json串中某几个属性的值,传出的数据只有值。可添加多个,若有多个需要传入参数,就添加多个property。
Destination:选择flowfile-Attribute 将添加的property作为flowfile的attribute传出。
这里写图片描述
AttributeToJson:将上个节点传出的attribute转换成json,将转换后的json作为flowfile传出。
这里写图片描述
Attribute List:为需要转换成json的attribute。
Destination:为将转换后的json作为flowfile传出。
InvokeHTTP:发送GET或POST请求,请求参数由上一个节点传入。
这里写图片描述
HTTP Method:为请求方式。
Remote URL:为请求路径。
这里写图片描述
Content-type:为传入数据格式,application/json表示传入数据为json格式,charset=UTF-8为传入数据的编码格式。
UpdateAttribute:接收返回值。
PutFile:将返回数据放入文件中查看输出。
例:kafka中消费的json为:
{“id”:”111”,”userName”:”小明”}
请求ip:8080/test的Controller为

@RestController
public class UserTest {

    @RequestMapping("/getUser")
    public User getUser(@RequestBody User user) {

        System.out.println(user.toString());
        user.setId(1);
        user.setAddress("北京");
        return user;
    }

}

其中userName为传入参数,id和address为我controller中的人为设置,返回数据为user对象。
从文件中查看到的返回值如下
这里写图片描述

### 如何在 Apache NiFi 中进行 HTTP 配置 #### 启动HTTP服务器并监听请求 `HandleHttpRequest` 处理器用于启动 HTTP 服务器来侦听传入的 HTTP 请求。每当接收到新请求时,会创建一个 FlowFile 并将其传递给下游组件处理[^1]。 ```properties # HandleHttpRequest 属性配置示例 Name = Start Web Server Port = 8080 ``` 为了使 `HandleHttpRequest` 正常工作,通常还需要配合使用 `HandleHttpResponse` 来完成整个 web service 的构建过程。 #### 发送HTTP响应 `HandleHttpResponse` 负责向客户端发送回复消息。它读取来自上游处理器产生的 FlowFiles,并从中提取必要的信息以形成恰当的回答内容返回给发起者。 ```properties # HandleHttpResponse 属性配置实例 Relationship to Respond With = success Status Code Attribute = http.status.code Response Content-Type = application/json; charset=UTF-8 ``` 这两个处理器共同作用可以实现在 NiFi 内部搭建简单的 RESTful API 接口的功能。 #### 使用InvokeHTTP调用外部API 当涉及到对外部资源发出 GET 或 POST 请求等情况时,则需要用到 `InvokeHTTP` 组件。如果目标 URL 是通过 HTTPS 协议访问的话,在某些情况下可能需要绕过 SSL 安全验证机制[^3]。 此时可以在 `InvokeHTTP` 的高级设置里指定自定义的信任存储文件以及相应的密码等参数来忽略证书校验步骤从而简化开发流程。 ```properties # InvokeHTTP 属性配置样例 (假设已正确设置了SSL上下文服务) Remote URL = https://example.com/api/v1/resource Method = GET Connection Timeout = 5 secs Read Timeout = 1 min Follow Redirects = true Use Proxy = false SSL Context Service = MyCustomSSLContextService ``` 以上就是在 Apache NiFi 中针对不同场景下的几种典型 HTTP 配置方法介绍。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值