R API будет доступен через Интернет

Привет у меня есть R-код, который я преобразовал в API, используя пакет сантехник.

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

Код находится в файле code.R и используя приведенные выше строки, я могу получить доступ к API с моего локального компьютера с URL-адреса http://localhost:8000/functionname

Однако, когда я заменяю локальный хост своим IP-адресом и получаю доступ к нему с других компьютеров в сети, я не могу получить доступ к API. Это почему?

2 ответа

Явный хост работает на моей машине.

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

а потом получить к нему доступ просто

your_ip:8000/functionname

По умолчанию сантехник прослушивает хост 0.0.0.0, что означает, что он должен прослушивать все устройства, будь то ваш IP или локальный хост. Похоже, либо на вашей машине установлен брандмауэр, либо ваша организация может иметь брандмауэр перед машиной, которую вы используете. Вам также необходимо подтвердить, что IP-адрес является маршрутизируемым (например, вы не пытаетесь получить доступ к адресу 192.168... из другой локальной сети).

Я бы не рекомендовал вам на самом деле пытаться разместить API на своем персональном компьютере или сервере, на котором вы выполняете итеративную разработку, поскольку для этого требуется открыть брандмауэр и принимать трафик на более чувствительном сервере. Лучшей практикой здесь будет развертывание вашего API на сервере, который предназначен для приема публичного трафика. Вот один простой способ получить эту настройку, которая теперь встроена в версию разработки для сантехника: https://plumber.trestletech.com/docs/digitalocean/

Другие вопросы по тегам