1 Objektif

Membuat REST API di R menggunakan package {plumber} dan mengintegrasikannya dengan shiny app dengan memanfaatkan Jobs di RStudio versi 1.3.xxx.

2 REST API

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
# 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
# run_api.R
library(plumber)
plumb(file = "plumber.R")$run(port = 8000)

Simpan kedua file tersebut di dalam folder yang sama.

3 Shiny App

Buat sebuah shiny app dengan cara berikut.

  • app.R
# 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
# run_shiny.R
library(shiny)
runApp(host = "0.0.0.0", port = 5013)

Simpan kedua file tersebut di dalam folder yang sama.

4 Start Local Job

4.1 Run API

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.

4.2 Run Shiny App

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.

5 Stop Jobs

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.