如何在NiFi中调用远程REST服务 [英] How to invoke a remote REST service in NiFi

查看:636
本文介绍了如何在NiFi中调用远程REST服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在NIFI处理器中使用xmlHttpRequest来调用远程休息服务?在我的情况下, ExecuteScript 处理器(使用Javascript)无法评估 XMLHttpRequest ;我可以使用任何类似的解决方案来获取响应数据吗?

Is it possible to use xmlHttpRequest in NIFI processor to invoke remote rest service? In my case the ExecuteScript processor (using Javascript) can't evaluate XMLHttpRequest; is there any similar solution I can use to get response data?

var OutputStreamCallback = Java.type("org.apache.nifi.processor.io.OutputStreamCallback");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");

Date.prototype.isValid = function () {
    return (Object.prototype.toString.call(this) === "[object Date]")
        && !isNaN(this.getTime());
};

var flowFile = session.get();

if (flowFile != null) {
    var fromDate = flowFile.getAttribute('fromDate')
    var uid = flowFile.getAttribute('uid')

    var xmlhttp = null;
    var result = null;

        xmlhttp = new XMLHttpRequest();
        if (typeof xmlhttp.overrideMimeType != 'undefined') {
            xmlhttp.overrideMimeType('application/json');

    } else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open('GET', "similar url here WorkInfo?dateFrom=?&uid=?", true);
    xmlhttp.send(dateFrom, uid);
    if (xmlhttp.status == 200) {
        result = 'WorkInfoDate'
    }
    flowFile = session.putAttribute(flowFile, 'filename', fromDate + '_' + result);

    flowFile = session.write(flowFile,
        new OutputStreamCallback(function (outputStream) {
            outputStream.write(command.getBytes(StandardCharsets.UTF_8))
        }));

    session.transfer(flowFile, REL_SUCCESS)
}


推荐答案

有一个InvokeHttp处理器,可用于调用REST服务而无需编写任何代码:

There is an InvokeHttp processor that can be used to invoke a REST service without writing any code:

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.3.0/org.apache.nifi.processors.standard。 InvokeHTTP / index.html

服务的响应将写入流文件的内容。

The response from the service will be written to the contents of the flow file.

这篇关于如何在NiFi中调用远程REST服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆