Обеспечение доступности API сантехника через Интернет - PullRequest
2 голосов
/ 17 марта 2019

Я довольно новичок в пакете сантехника в R. У меня есть работающий API для локального запуска на моей машине, и я могу получить к нему доступ из живого JS-приложения в Интернете с кодом:

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

Я прочитал, что нехорошо размещать код r на моем персональном ноутбуке, но я просто хотел иметь возможность запустить приведенный выше код, открыть сеанс R-сервера, а затем получить доступ к нему через Интернет издругой компьютер для демонстрационных целей.

Есть ли способ получить доступ к этому API через Интернет на основе IP-адреса компьютера, на котором запущен сеанс R?Я не смог найти документацию для доступных функций r$run r$host r$serve.

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Вы можете попробовать этот график / 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. Есть кнопка «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

скопировав эту вставку ссылки в браузер, вы увидите сюжет

Затем с помощью терминала / командной строки получите свой IP ...

Предположим, ваш IP "192.168.10.04"

скопируйте его и замените этимke: -

http://192.168.10.04:8000/plotly

Затем скопируйте эту ссылку и вставьте ее в ИНФОРМАЦИЮ другого веб-приложения

Вы увидите свой R-график в новом фреймворке (веб-приложение) ...

Я думаю, это должно помочь вам

1 голос
/ 21 марта 2019

Это должно работать прекрасно, если вы

  • знаете ip вашего ноутбука
  • ip доступен для других (в вашей команде), т.е. вы находитесь в одной сетиили ваш компьютер имеет глобально действующий ip
  • без брандмауэра порт 8000
  • CORS включен чем-то вроде
#' @filter cors
cors <- function(req, res) {
   res$setHeader("Access-Control-Allow-Origin", "*")
   plumber::forward()
}

Очевидно, это неотвечает за производственную среду, но хорошо работает только для демонстрации / тестирования.

...