通过互联网使管道工API可用

时间:2019-03-17 20:25:48

标签: r plumber

我对R中的plumber软件包还不是很陌生。我有一个可以在我的计算机上本地运行的有效API,并且可以使用以下代码从Web上的实时JS应用程序访问它:

r <- plumb("my_api_code.r")
r$run(host = "0.0.0.0", port = 8000)

我已经读到,在个人笔记本电脑上托管R代码不是一个好主意,但我只是想能够运行以上代码,打开R服务器会话,然后通过Internet访问此代码从另一台机器上进行演示。

是否有一种方法可以根据运行R会话的计算机的IP地址通过Internet访问此api?我找不到可用的r$run r$host r$serve函数的文档。

2 个答案:

答案 0 :(得分:1)

它应该能很好地配合您

  • 了解笔记本电脑的IP地址
  • 其他人(您的团队中)可以访问该IP,即您位于同一网络上,或者您的计算机具有全局有效的IP
  • 没有防火墙阻止端口8000
  • CORS通过类似的方式启用
#' @filter cors
cors <- function(req, res) {
   res$setHeader("Access-Control-Allow-Origin", "*")
   plumber::forward()
}

很明显,这不是生产环境的答案,而是仅用于展示/测试就可以了。

答案 1 :(得分:1)

您可以尝试一下 该图/ API可通过互联网获得

  

plumbr.R

#' @get /plotly
#' @serializer htmlwidget
plotlygraph <- function(){
 library(plumber)
 library(plotly)
Animals <- c("giraffes", "orangutans", "monkeys")
SF_Zoo <- c(20, 14, 23)
LA_Zoo <- c(12, 18, 29)
data <- data.frame(Animals, SF_Zoo, LA_Zoo)
 p <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF Zoo') %>%
   add_trace(y = ~LA_Zoo, name = 'LA Zoo') %>%
   layout(yaxis = list(title = 'Count'), barmode = 'group')
 return(p)
}
  

在R控制台上使用以下命令运行以上代码

r <- plumber::plumb("plumbr.R")
r$run(host="0.0.0.0", port=8000)

运行此命令后 Swagger窗口将打开 点击按钮“获取/打印” ,然后点击“试用” ,点击“执行” 等待几秒钟

  

步骤1:

https://i.stack.imgur.com/mEcg4.png

  

第2步:

https://i.stack.imgur.com/EapIw.png

  

步骤3:

https://i.stack.imgur.com/h74C6.png

  

第4步:

[https://i.stack.imgur.com/9CkGc.png][4]

然后显示HTML代码 在此之上,它给出了这样的请求网址

  

http://127.0.0.1:8000/plotly

复制链接粘贴到浏览器中,您将看到图

然后使用终端/命令提示符获取您的IP ...

  

假设您的IP为“ 192.168.10.04”

将其复制并替换为:-

  

http://192.168.10.04:8000/plotly

     

然后复制该链接并将其粘贴到您的另一个网络应用程序的框架

您将在新框架(网络应用)上看到您的R图...

我认为这应该对您有帮助