通过rsconnect部署管道工API(未找到处理程序)

时间:2017-12-19 01:08:57

标签: r plumber

我有一个带有示例API函数的目录(testAPI.R):

#* @get /mean
normalMean <- function(samples=10){
 library(plumber)
 data <- rnorm(samples)
 mean(data)
}

rsconnect::deployAPI()函数想要指向一个名为plumber.R的文件,该文件返回plumb个对象。所以我在目录中有文件plumber.R

library(plumber)
plumber::plumb("testAPI.R")

然后在目录上调用rsconnect::deployAPI() ...

它部署没有错误,但似乎没有找到处理程序: screenshot of the swagger page

1 个答案:

答案 0 :(得分:0)

我们仍然缺乏优秀的文档,抱歉。这在部署到RStudio Connect服务器时目前只能正常工作;希望这就是你正在使用的。

在内部,RStudio Connect使用plumber::plumb(dir=___)函数来调用您的API。你可以看到那里的文档

  

包含plumber.R文件的目录,作为管道工路由器定义进行解析。或者,如果找到了entrypoint.R文件,它将优先并负责返回一个可运行的Plumber路由器。

所以你应该......

  1. 将主路由器重命名为plumber.R,在这种情况下,RStudio Connect会在执行您的API时找到并调用该文件。或
  2. 创建一个返回主路由器的entrypoint.R文件。这种方法允许您在路由器上进行一些额外的自定义(或检测不同的文件)。如果您将其指定为entrypoint.R文件而不是plumber.R文件,则看起来您提供的代码段实际上会有效。