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

时间:2016-11-14 21:02:46

标签: rest exception apache-nifi

我正在尝试使用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错误,邮件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.

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

2 个答案:

答案 0 :(得分:3)

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

您还可以通过启用

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

在conf / logback.xml中。

答案 1 :(得分:0)

首先,您必须使用以下命令上传模板(我使用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是您的根进程组。