3

嗨,我有 R 代码,我使用管道工包将其转换为 API 。

library(plumber)
r <- plumb("code.R")
r$run(port=8000)

代码位于文件中code.R,使用上面的行,我可以从我的本地计算机从 URL http://localhost:8000/functionname访问 API

但是,当我用我的 IP 地址替换本地主机并从网络中的其他机器访问相同的主机时,我无法访问 API。这是为什么?

4

2 回答 2

6

使主机在我的机器上显式工作。

r$run(host = "0.0.0.0",port=8000)

然后访问它只是

your_ip:8000/functionname
于 2018-02-06T23:51:47.177 回答
2

默认情况下,管道工在主机 0.0.0.0 上侦听,这意味着它应该在所有设备上侦听,无论是您的 IP 还是本地主机。听起来您的机器有防火墙,或者您的组织可能在您使用的机器前面有防火墙。您还需要确认 IP 地址是可路由的(例如,您没有尝试从另一个 LAN访问 192.168 ..地址)。

我不鼓励您实际尝试在您的个人计算机或您正在进行迭代开发的服务器上托管 API,因为它需要打开防火墙并在更敏感的服务器上接受流量。此处的最佳做法是将您的 API 部署到旨在接收公共流量的服务器。这是获得现在内置到管道工开发版本中的设置的一种简单方法: https ://plumber.trestletech.com/docs/digitalocean/

于 2017-05-21T02:34:58.437 回答