使用 nifi 模板导入时参数类型不匹配 API

Argument type mismatch using nifi template import API

我正在尝试使用 Nifi REST API 1.0 的导入端点。我已使用 UI 将模板导出为 XML,并尝试使用 Postman 将其导入。请求如下所示:

POST /nifi-api/process-groups/63dcaf98-0158-1000-04da-dd54bbb3a5b8/templates/import HTTP/1.1
Host: localhost:8080
Content-Type: application/xml
Cache-Control: no-cache
Postman-Token: 37a10e8b-b30d-b5c8-4219-ca1ba34f79da

<?xml version="1.0" ?>
<template encoding-version="1.0">
   <description></description>
   ...
</template>

我收到 400 错误 return,消息 argument type mismatch。 nifi-user.log:

没什么好用的
2016-11-14 14:58:22,164 INFO [NiFi Web Server-327] org.apache.nifi.web.filter.RequestLogger Attempting request for (anonymous)     POST http://localhost:8080/nifi-api/process-groups/63dcaf98-0158-1000-04da-dd54bbb3a5b8/templates/import (source ip: 127.0.0.1)
 2016-11-14 14:58:22,231 INFO [NiFi Web Server-327] o.a.n.w.a.c.IllegalArgumentExceptionMapper java.lang.IllegalArgumentException: argument type mismatch. Returning Bad Request response.

任何可能导致此问题的想法,或者我该如何调试?

尝试用另一个名为 templateEntity 的元素包裹根 template 元素。 Apache NiFi 1.0.0 中的大多数端点都用 entity 对象包装有问题的对象,以便在访问被拒绝时传递有关该对象的相关详细信息,以帮助促进多租户模型。此模式应用于大多数端点,以帮助保持整个 API 的一致性。

您还可以通过为

启用调试级别日志记录来获取更多详细信息
<logger name="org.apache.nifi.web.api.config" level="DEBUG" additivity="false">

在 conf/logback.xml.

首先你必须上传模板,使用以下命令(我使用 curl):

curl -iv -F template=@Sample_Process_group.xml -X POST http://172.17.0.4:8080/nifi-api/process-groups/2a9c6a0d-015c-1000-dec6-e81122344f7e/templates/upload 其中 guid 是您的根进程组。