使水管工 API 在互联网上可用

Making plumber API available over internet

我对 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 地址通过互联网访问此 api?我找不到可用的 r$run r$host r$serve 函数的文档。

给你它应该工作得很好

  • 知道你笔记本电脑的IP
  • 其他人(在您的团队中)可以访问该 ip,即您在同一网络上,或者您的计算机具有全球有效的 ip
  • 没有防火墙阻止端口 8000
  • CORS 由
  • 之类的东西启用
#' @filter cors
cors <- function(req, res) {
   res$setHeader("Access-Control-Allow-Origin", "*")
   plumber::forward()
}

显然,这不是生产环境的答案,但仅适用于 showcasing/testing。

你可以试试这个 此 plot/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 window 将打开 有按钮 "Get/Plotly" 单击此然后单击 "试用" 单击 "执行" 等几秒

第 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 代码 在此之上,它给出了这样的请求 URL

http://127.0.0.1:8000/plotly

复制 link 粘贴到浏览器中你会看到剧情

然后使用 terminal/command 提示获取您的 IP...

假设你的IP是"192.168.10.04"

复制并替换为:-

http://192.168.10.04:8000/plotly

然后复制 link 并将其粘贴到另一个网络应用程序的 IFRAME

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

我想这应该对你有帮助