我一直在使用管道工包开发 REST API。我仍在学习如何做到这一点的基础知识。我希望 API 能够:
1) 接收 POSTed 数据和参数并运行模型。2) 发回结果。3) 在网页(或任何网页)上打印图表。
我有 #1 和 #2 工作,但我没有找到做 #3 的方法。我确信有些概念我没有完全理解。
这是我运行 API 的脚本。我一直在 RStudio 的一个实例中运行它:
# Packages
library(plumber)
library(jsonlite)
#* @post /predict_mtcars
mtcars.driver <- function(df, depVar, predVars){
# Convert objects to JSON
depVar <- fromJSON(depVar)
predVars <- fromJSON(predVars)
df <- fromJSON(df)
df <- df[, c(depVar, predVars)]
fit <- lm(df)
outDf <- data.frame(depVar = df[depVar], 'Predicted' = predict(fit),
'Residuals' = fit$residuals)
print(plot(outDf))
return(toJSON(outDf))
}
这是我驱动该脚本的代码:
# Deploy.R
library(plumber)
setwd('YOUR PATH')
r <- plumb("Driver.R")
r$run(port=8080)
这是我在第二个 RStudio 实例上运行的测试脚本:
# Packages
library(sp)
library(jsonlite)
library(httr)
# Data
data(mtcars)
# Parameters
depVar <- 'mpg'
predVars <- c('cyl', 'hp', 'wt')
df <- mtcars
body <- list("df" = toJSON(df),
"depVar" = toJSON(depVar),
"predVars" = toJSON(predVars))
req <- POST('http://localhost:8080/predict_mtcars',
body = body,
encode = 'json',
verbose())
outDf <- fromJSON(content(req)[[1]][1])
plot(outDf)
除了第一个脚本中的打印/绘图语句之外,所有这些都有效。我在网上看到的这种描述很少,但能够将数据发布到 API,然后让它在 API 的网站上打印图表和其他信息似乎很有用。
请注意,关于使用管道工托管 API,我还有很多东西要学习,所以这可能是问题的一部分。提前致谢。