I am fairly new to the plumber package in R. I got a working API to run locally on my machine and I can access it from a live JS application on the web with the code:
r <- plumb("my_api_code.r")
r$run(host = "0.0.0.0", port = 8000)
I have read that it is not a good idea to host the r code on say my personal laptop, but I just wanted to be able to run the above code, open an R server session, and then access this over the internet from a different machine for demonstration purposes.
Is there a way to access this api over the internet based on the IP address of the machine running the R session? I wasn't able to find documentation for the r$run
r$host
r$serve
functions that are available.
You can try this this plot/API available over the internet
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)
}
Run this above code using the following command on R Console
r <- plumber::plumb("plumbr.R")
r$run(host="0.0.0.0", port=8000)
After running this The Swagger window will open There is button "Get/Plotly" click on this then click on "try out" click on "Execute" wait for few seconds
Step 1:
https://i.sstatic.net/mEcg4.png
Step 2:
https://i.sstatic.net/EapIw.png
Step 3:
https://i.sstatic.net/h74C6.png
Step 4:
[https://i.sstatic.net/9CkGc.png][4]
then it shows HTML code above this, it gives a Request URL like this
copy that link paste in the browser you will see the plot
Then using terminal/command prompt get your IP...
Assume your IP is "192.168.10.04"
copy it and replace it with this like:-
http://192.168.10.04:8000/plotly
Then copy that link and paste it to your IFRAME of another web app
You will see your R Plot on a new framework (web app)...
I think this should help you