r-模型pluber API卷曲检查与JSON/DF



我使用以下代码创建了一个伪模型:

#get the data
data(Boston, package="MASS")
# train a model for median house price as a function of the other variables
bos_rf <- lm(medv ~ crim + indus + dis , data=Boston)
# save the model
saveRDS(bos_rf, "bos_rf.rds")

现在我想公开这个模型作为一个API使用水管工。为此,我的代码是

# load as bos_rf.R
bos_rf <- readRDS("bos_rf.rds")
#* @param input_json JSON file
#* @post /score
function(input_json)
{
temp <- toJSON(input_json, auto_unbox = T)
data <- fromJSON(temp) %>% as.data.frame
data = data %>% mutate_all(as.numeric)
predict(bos_rf, data)
}

在我的参数上面是一个JSON,我很想把它作为一个数据框架。我正在函数中将JSON转换为数据帧

然后我使用启动API

# try API 1 
# 
dummy_model_api <- plumber::plumb("2_R_code_to_API.R")
dummy_model_api$run(host = '127.0.0.1', port = 8000)

当我在swagger门户中粘贴JSON时,API运行良好,但当我使用以下命令运行curl时

$ curl "http://127.0.0.1:8000/score" -d "@test.JSON"
$ curl --data @test.json http://localhost:8000/score

没用。如何将测试JSON直接传递给API以获得预测。注意,如果我用R检查函数,我得到预测。请说明如何将JSON或DF直接传递给curl API请求并获得响应,而不是手动复制JSON/或逐个定义每个变量的API输入。这种方法对于100个变量是不可行的。

这个JSON的示例怎么可能已经反映在swagger主体中了呢。也就是说,当swagger打开时,一个带有一些值的示例JSON已经存在于主体中,并准备执行。

如果水管工检测到它以{开始,它将在请求体上执行fromJSON

您通常会发送一个类似的JSON字符串

{
"input_json" : _insert toJSON results here_
}

这样水管工就可以将其转换为一个命名列表,并将input_json映射到您的函数参数。

最新更新