通过POST REST API调用向Rapidminer服务发送JSON数据
本文处理JSON文件。
有关CSV上传,请参阅:
XML:
当我们想要将整个记录列表作为文件或json数据流发送到服务器以进行评分或培训时;我们需要一个POST呼叫。
在我们开始之前,了解如何进行POST调用可能有点令人生畏,因为它不像通过web浏览器传递单个值那么简单,而且很多文章都在讨论如何通过编程语言进行POST调用。我们将使用cURL,这是一个通过URL语法发送和接收文件的命令行工具。它有很多参数,但我们现在只需要两个参数,更多的细节可以通过在命令行中输入“curl -h”来找到https://en.wikipedia.org/wiki/CURL
让我们从一个非常简单的过程开始,它训练一个决策树来对客户进行分类。它意味着能够预测“Response”属性。
数据样本如下:
对于部署,我们有另一个流程,它导入上面基于已知响应的数据构建的模型,并将其应用于未知响应的数据。
请注意“Read Document”操作符是如何连接到流程画布的输入端口的。这样它就可以通过POST上传从我们将要创建的服务接收数据。此操作符当前未指向任何文件。
还有一个“Cut Document”操作符,它是将JSON文件划分为每个记录的JSON文档所必需的,以便“JSON to Data”操作符可以解析它们。“JSON to Data”操作符意味着摄取JSON文档的集合,而不是单个文件,这就是为什么我们使用以下参数将文档切割成集合的原因:
请注意,在上面的步骤1到4中,我们使用JsonPath表示法来解析文件和“$.”参数。对于其他文件,这个参数可能会变得更加复杂。
在线研究JsonPath表示法和正则表达式可能是值得的。
在创建服务之前,请记住,我们要传递的用于评分的数据在response属性中没有值,这些值将被预测。
现在让我们在Rapidminer服务器中创建服务:
没有特殊的参数或宏,只要它指向正确的部署流程即可。然后我们测试该服务以获取URL,在本例中为:
http://RMUK-KBONIKOS:8080/api/rest/process/POSTtes
我们可以在命令行中使用curl,在Windows中,可以从开始菜单中输入“cmd”启动curl,然后我们可以输入以下curl命令:
curl——user admin——upload-file C:\test。json http://<您的服务器>: 8080 / api /休息/过程/ POSTtes
或者,curl——user admin——data{json数据}http://<您的服务器>: 8080 / api /休息/过程/ POSTtes
本例中的用户为“admin”,文件为“test”。json并保存在C:驱动器中,文件的路径可以更改。当执行此操作时,将要求您输入用户密码,然后您应该得到XML格式的评分记录列表,在本例中,这取决于定义服务时选择的输出格式。
有了上面的帮助,您应该能够创建一个进程,并将其作为Rapidminer Server中的服务公开,然后测试它是否能够通过POST上传接收JSON数据或文件,并进行评分并返回输出。
评论
哦,这很好。谢谢你!
它显示以下错误
请帮助
"进程执行失败:'No input for port '读取文档。文件(连接)'。'。详细的错误信息:'指定的端口没有收到任何输入。端口未连接或前面的操作符未提供任何输出。’”