我正在尝试使用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.
有什么想法可能导致这个,或者我如何调试?
尝试用另一个名为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是您的根进程组。