All Projects → rstudio → Plumber

rstudio / Plumber

Licence: other
Turn your R code into a web API.

Programming Languages

r
7636 projects

Projects that are alternatives of or similar to Plumber

Nei
NEI 接口管理平台 源代码
Stars: ✭ 198 (-82.93%)
Mutual labels:  api, api-server
Nei Toolkit
NEI 接口文档管理平台配套自动化工具
Stars: ✭ 781 (-32.67%)
Mutual labels:  api, api-server
Chn Eolinker Ams Lite 4.0 For Java
中国最大的API接口管理平台,3.x开源发行版,支持多国语言[英语、简体中文、繁体中文]
Stars: ✭ 275 (-76.29%)
Mutual labels:  api, api-server
Graphql2rest
GraphQL to REST converter: automatically generate a RESTful API from your existing GraphQL API
Stars: ✭ 181 (-84.4%)
Mutual labels:  api, api-server
Vaxic
Node HTTP server framework
Stars: ✭ 45 (-96.12%)
Mutual labels:  api, api-server
Blog Service
blog service @nestjs
Stars: ✭ 188 (-83.79%)
Mutual labels:  api, api-server
Para
Open source back-end server for web, mobile and IoT. The backend for busy developers. (self-hosted or hosted)
Stars: ✭ 389 (-66.47%)
Mutual labels:  api, api-server
Graphql Api For Wp
[READ ONLY] GraphQL API for WordPress
Stars: ✭ 136 (-88.28%)
Mutual labels:  api, api-server
Spyne
A transport agnostic sync/async RPC library that focuses on exposing services with a well-defined API using popular protocols.
Stars: ✭ 992 (-14.48%)
Mutual labels:  api, api-server
Zato
ESB, SOA, REST, APIs and Cloud Integrations in Python
Stars: ✭ 889 (-23.36%)
Mutual labels:  api, api-server
Proteus
Lean, mean, and incredibly fast JVM framework for web and microservice development.
Stars: ✭ 178 (-84.66%)
Mutual labels:  api, api-server
Rest Layer
REST Layer, Go (golang) REST API framework
Stars: ✭ 1,068 (-7.93%)
Mutual labels:  api, api-server
Appkernel
API development made easy: a smart Python 3 API framework
Stars: ✭ 152 (-86.9%)
Mutual labels:  api, api-server
Actionhero
Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks
Stars: ✭ 2,280 (+96.55%)
Mutual labels:  api, api-server
Duckrails
Development tool to mock API endpoints quickly and easily (docker image available)
Stars: ✭ 1,690 (+45.69%)
Mutual labels:  api, api-server
Ocrserver
A simple OCR API server, seriously easy to be deployed by Docker, on Heroku as well
Stars: ✭ 359 (-69.05%)
Mutual labels:  api, api-server
React Chat Api
📡 API for chat application for DogeCodes React course
Stars: ✭ 121 (-89.57%)
Mutual labels:  api, api-server
Jsonrpcserver
Process JSON-RPC requests in Python
Stars: ✭ 126 (-89.14%)
Mutual labels:  api, api-server
Graphiti
Stylish Graph APIs
Stars: ✭ 783 (-32.5%)
Mutual labels:  api, api-server
Aws Serverless Java Container
A Java wrapper to run Spring, Jersey, Spark, and other apps inside AWS Lambda.
Stars: ✭ 1,054 (-9.14%)
Mutual labels:  api, api-server

plumber

R build status CRAN RStudio mirror downloads codecov RStudio community

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

# plumber.R

#* Echo back the input
#* @param msg The message to echo
#* @get /echo
function(msg="") {
  list(msg = paste0("The message is: '", msg, "'"))
}

#* Plot a histogram
#* @serializer png
#* @get /plot
function() {
  rand <- rnorm(100)
  hist(rand)
}

#* Return the sum of two numbers
#* @param a The first number to add
#* @param b The second number to add
#* @post /sum
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)
# 'plumber.R' is the location of the file shown above
pr("plumber.R") %>%
  pr_run(port=8000)

You can visit this URL using a browser or a terminal to run your R function and get the results. For instance http://localhost:8000/plot will show you a histogram, and http://localhost:8000/echo?msg=hello will echo back the 'hello' message you provided.

Here we're using curl via a Mac/Linux terminal.

$ curl "http://localhost:8000/echo"
 {"msg":["The message is: ''"]}
$ curl "http://localhost:8000/echo?msg=hello"
 {"msg":["The message is: 'hello'"]}

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 -H "Content-Type: application/json" --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.

remotes::install_github("rstudio/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. To deploy to DigitalOcean, check out the plumber companion package plumberDeploy.

RStudio Connect is a commercial publishing platform that enables R developers to easily publish a variety of R content types, including Plumber APIs. Additional documentation is available at https://www.rplumber.io/articles/hosting.html#rstudio-connect-1.

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

Related Projects

  • OpenCPU - A server designed for hosting R APIs with an eye towards scientific research.
  • jug - (development discontinued) an R package similar to Plumber but uses a more programmatic approach to constructing the API.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].