我正在尝试使用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.
可能导致此问题的任何想法,或者我如何调试?
答案 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是您的根进程组。