Membuat REST API di R menggunakan package {plumber} dan mengintegrasikannya dengan shiny app dengan memanfaatkan Jobs di RStudio versi 1.3.xxx.
Untuk membuat REST API di R kita akan gunakan package {plumber}. Buat sebuah file script R baru dengan nama plumber.R dengan isi seperti berikut.
# plumber.R
library(plumber)
#* @apiTitle Plumber Example API
#*
#* Serve iris data
#* @param sp Species
#* @get /iris
function(sp){
iris[iris$Species == sp, -5]
}
Kemudian buat sebuah file script R baru yang lain dengan nama run_api.R yang isinya seperti berikut.
# run_api.R
library(plumber)
plumb(file = "plumber.R")$run(port = 8000)
Simpan kedua file tersebut di dalam folder yang sama.
Buat sebuah shiny app dengan cara berikut.
# app.R
library(shiny)
library(jsonlite)
library(ggplot2)
ui <- fluidPage(
title = "Test API",
column(3,
selectInput("sp", "Species", choices = unique(iris$Species)),
selectInput("var", "Variable", choices = names(iris)[-5])
),
column(9,
plotOutput("plot1")
)
)
server <- function(input, output){
output$plot1 <- renderPlot({
message(sprintf("\nhttp://localhost:8000/iris?sp=%s, var=%s", input$sp, input$var))
dtf <- fromJSON(sprintf("http://localhost:8000/iris?sp=%s", input$sp))
ggplot(dtf, aes_string(input$var)) +
geom_histogram(bins = 30) +
theme_minimal()
})
}
shinyApp(ui, server)
Dan sebuah file script R untuk menjalankan shiny app tersebut.
# run_shiny.R
library(shiny)
runApp(host = "0.0.0.0", port = 5013)
Simpan kedua file tersebut di dalam folder yang sama.
Klik pada script editor file run_api.R agar aktif. Kemudian klik Start Local Job dan pastikan file yang terpilih pada bagian R Script adalah run_api.R.
Selanjutnya klik Start. REST API plumber berhasil berjalan ketika tampilan pada tab Jobs seperti berikut ini.
Anda dapat menge-test API pada browser atau aplikasi lain seperti Postman. Buka browser Anda dan masukkan alamat berikut: http://localhost:8000/iris?sp=setosa. Jika API sudah berjalan dengan baik maka akan muncul respinse berupa data dengan format JSON.
Setelah REST API berjalan dengan baik, berikutnya shiny app yang sudah dibuat akan dijalankan sebagai local job dengan cara yang sama. Buka file script run_shiny.R. Kemudian klik Start Local Job pada tab Jobs. Jika tidak ada tombol Start Local Job, Anda perlu klik tombol panah di samping run_api.R di tab Jobs.
Sama seperti sebelumnya, pastikan file yang terpilih pada bagian R Script adalah run_shiny.R. Jika shiny app sudah berjalan maka tampilan tab Jobs akan seperti berikut.
Aplikasi shiny tersebut dapat Anda akses melalui http://localhost:5013/ seperti berikut ini.
Ketika API dan shiny app masih berjalan maka tampilan tab Jobs akan seperti gambar di bawah ini.
Untuk menghentikan REST API dan shiny app pada local job Anda hanya perlu klik tanda bulat merah di setiap job yang sedang berjalan.