Learn R Programming

⚠️There's a newer version (1.3.0) of this package.Take me there.

plumber

plumber allows you to create a REST API by merely decorating your existing R source code with special comments. Take a look at an example.

# myfile.R

#* @get /mean
normalMean <- function(samples=10){
  data <- rnorm(samples)
  mean(data)
}

#* @post /sum
addTwo <- function(a, b){
  as.numeric(a) + as.numeric(b)
}

These comments allow plumber to make your R functions available as API endpoints. You can use either #* as the prefix or #', but we recommend the former since #' will collide with Roxygen.

> library(plumber)
> r <- plumb("myfile.R")  # Where 'myfile.R' is the location of the file shown above
> r$run(port=8000)

You can visit this URL using a browser or a terminal to run your R function and get the results. Here we're using curl via a Mac/Linux terminal.

$ curl "http://localhost:8000/mean"
 [-0.254]
$ curl "http://localhost:8000/mean?samples=10000"
 [-0.0038]

As you might have guessed, the request's query string parameters are forwarded to the R function as arguments (as character strings).

$ curl --data "a=4&b=3" "http://localhost:8000/sum"
 [7]

You can also send your data as JSON:

$ curl --data '{"a":4, "b":5}' http://localhost:8000/sum
 [9]

Installation

You can install the latest stable version from CRAN using the following command:

install.packages("plumber")

If you want to try out the latest development version, you can install it from GitHub. The easiest way to do that is by using devtools.

library(devtools)
install_github("trestletech/plumber")
library(plumber)

Hosting

If you're just getting started with hosting cloud servers, the DigitalOcean integration included in plumber will be the best way to get started. You'll be able to get a server hosting your custom API in just two R commands. Full documentation is available at http://plumber.trestletech.com/docs/digitalocean/.

A couple of other approaches to hosting plumber are also made available:

Provenance

plumber was originally released as the rapier package and has since been renamed (7/13/2015).

Copy Link

Version

Install

install.packages('plumber')

Monthly Downloads

28,117

Version

0.3.2

License

MIT + file LICENSE

Maintainer

Jeff Allen

Last Published

May 22nd, 2017

Functions in plumber (0.3.2)

forward

Forward Request to The Next Handler
include_file

Send File Contents as Response
PlumberProcessor

A plumber processor
addSerializer

Add a Serializer
do_forward

Forward Root Requests to an API
do_provision

Provision a DigitalOcean plumber server
do_remove_api

Remove an API from the server
do_remove_forward

Remove the forwarding rule
plumber

Plumber Router
sessionCookie

Store session data in encrypted cookies.
do_configure_https

Add HTTPS to a plumber Droplet
do_deploy_api

Deploy or Update an API