Awesome REST
A collaborative list of great resources about RESTful API architecture, development, test, and performance. Feel free to contribute to this on-going list.
Design
- Architectural Styles and the Design of Network-based Software Architectures - Roy Fielding's dissertation defining REST
- HTTP API design guide extracted from work on the Heroku Platform API
- Best Practices for Designing a Pragmatic RESTful API
- How to design a REST API? - Full guide tackling security, pagination, filtering, versioning, partial answers, CORS, etc.
- Richardson Maturity Model - Explained by Martin Fowler, originally presented by Leonard Richardson at the QCon 2008.
- Enterprise Integration Using REST - Discusses the constraints and flexibility that you have with nonpublic APIs, and lessons learned from doing large scale RESTful integration across multiple teams.
- HATEOAS - Clear explanation on what HATEOAS is, and why you should use it.
- How to GET a cup of coffee
- REST API Tutorial - RestApiTutorial.com is dedicated to tracking REST API best practices and making resources available to enable quick reference and self education for the development crafts-person.
- API-Security-Checklist - Best practices about REST API security
Guidelines
- Adidas REST API Guidelines - Adidas REST API Guidelines define standards and guidelines for building REST APIs at adidas.
- Atlassian REST API design guidelines version 1 - This document provides guidelines to Atlassian developers who are designing REST APIs for Atlassian applications.
- Cisco REST API Guide - Guidelines for designing REST APIs at Cisco.
- Google Cloud API design guide - Guidelines Google follows when designing Cloud APIs and other Google APIs (REST APIs and gRPC APIs).
- Haufe API Style Guide - Guidelines created by Haufe-Lexware CTO team.
- Microsoft REST API Guidelines - The Microsoft REST API Guidelines, as a design principle, encourages application developers to have resources accessible to them via a RESTful HTTP interface.
- Restful API Guidelines by Zalando - Developing Restful APIs: A Comprehensive Set of Guidelines.
Standards
- JSON API - Standard for building APIs in JSON.
- RAML - Simple and succinct way to describe RESTful API.
- JSend - Simple specification that lays down some rules for how JSON responses from web servers should be formatted.
- OData - Open protocol to allow the creation and consumption of queryable and interoperable RESTful APIs. Quite complex.
- HAL - Simple format that gives a consistent and easy way to hyperlink between resources in your API.
- JSON-LD - Standard for describing Linked Data and hypermedia relations in JSON (W3C).
- Hydra - Vocabulary for Hypermedia-Driven Web APIs (W3C).
- Schema.org - Collection of schemas describing common data models.
- OpenAPI - Formerly known as the Swagger Specification, OpenAPI specifcation is the world’s most popular description format for defining Restful APIs.
Clients
PHP Clients
- Guzzle - HTTP client and framework for consuming RESTful web services.
- Buzz - Another lightweight HTTP client.
- unirest for PHP - Simplified, lightweight HTTP client library.
JavaScript Clients
- restangular - AngularJS service to handle REST API properly and easily.
- restful.js - JS client for interacting with server-side RESTful resources.
- traverson - A Hypermedia API/HATEOAS Client for Node.js and the Browser
- raml-client-generator - Generates static client libs for js.
Node.js Clients
- restler - REST client library for node.js.
- unirest for Node.js - Simplified, lightweight HTTP client library.
Ruby Clients
- RESTClient - Simple HTTP and REST client for Ruby, inspired by microframework syntax for specifying actions.
- Spyke - Interact with REST services in an ActiveRecord-like manner.
- excon - Usable, fast, simple Ruby HTTP 1.1. It works great as a general HTTP(s) client and is particularly well suited to usage in API clients.
- httparty - Makes HTTP fun again!
- Net::HTTP - Net::HTTP provides a rich library which can be used to build HTTP user-agents.
- raml-ruby-client-generator - Auto generate API client from a RAML file.
Go Clients
- gopencils - Small and simple package to easily consume REST APIs.
- resty - Simple HTTP and REST client for Go inspired by Ruby rest-client.
.NET Clients
- RestSharp - Simple REST and HTTP API client for .NET
- Refit - The automatic type-safe REST library for Xamarin and .NET
- Flurl - Fluent, portable, testable REST/HTTP client library
- RestEase - Easy-to-use typesafe REST API client library, which is simple and customisable. Heavily inspired by Refit
- Tiny.RestClient - Simpliest Fluent REST client for .NET.
- RestLess - The automatic type-safe-reflectionless REST API client library for .Net Standard.
- Apizr - Refit-based web api client, but resilient (retry, connectivity, cache, auth, log, priority, etc...).
Generators
- openapi-generator - OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3).
Servers
Directly On Top Of A RMDB
- postgrest - Serve a fully RESTful API directly from an existing PostgreSQL database.
- MySQL HTTP plugin - Simple REST-like / CRUD server for any MySQL database.
- pREST - A fully RESTful API from any existing PostgreSQL database written in Go.
Node.js
- node-restify - Framework specifically meant for REST API.
- Sails.js - Node.js Web framework embedding a command to generate automatically a REST API.
- mers - Express service exposing Mongoose finders as RESTful API.
- Baucis - Build scalable REST API based on your Mongoose entities.
- flatiron/resourceful - Isomorphic Resource engine for JavaScript.
- loopback - Powerful Node.js framework for creating APIs and easily connecting to backend data sources.
- Feathers - is a real-time, micro-service web framework that gives you control over your data via RESTful resources, sockets and flexible plug-ins.
- Expressa - Express middleware for creating APIs from JSON schemas with a simple admin editor and permissions model.
- rest-hapi - Generate RESTful API based on mongoose models that supports relational data.
- Nestjsx/crud - Generate CRUD controllers and services for RESTful API with NestJS and TypeORM.
PHP
- Microrest - Micro-web application providing a REST API on top of any relational database.
- Negotiation - Content negotiation library.
- Drest - Library for exposing Doctrine entities as REST resource endpoints.
- Restler - Lightweight framework to expose PHP methods as RESTful web API.
- HAL - Hypertext Application Language (HAL) builder library.
- Apigility - API builder built with Zend Framework 2.
- phprest - Specialized REST microframework for PHP.
- Hateoas - PHP library to support implementing representations for HATEOAS REST web services.
- Fusio - Open source API management platform.
Symfony2
- REST APIs with Symfony2: the Right Way - Complete guide to build a state-of-the-art REST API with Symfony2 framework.
- FOSRestBundle - Bundle handling view, routing, error handling, etc. for your REST API.
- stanlemon/rest-bundle - Build a REST API based on Doctrine entities using conventions over configuration.
- lakion/Lionframe - Glu between several community libraries to ease API development.
- BazingaHateoasBundle - Integrate the Hateoas library into a Symfony2 application.
- Symfony REST Edition - Start with a Symfony2 application with all REST-friendly bundles pre-configured.
- NgAdminGeneratorBundle - Boostrap ng-admin configuration based on
stanlemon/rest-bundle
. - DunglasApiBundle - Build a REST API which follow Hydra/JSON-LD specification.
- API Platform - Specialize Symfony edition for the creation of hypermedia REST APIs.
- NelmioApiDocBundle - Generate documentation for your REST API from annotations.
PowerShell
- Pode - Pode is an cross-platform, open-source, community-supported web server and REST API framework for PowerShell developers
Python
- Django REST framework - Powerful and flexible toolkit that makes it easy to build Web APIs.
- django-tastypie - Creating delicious APIs for Django apps.
- flask-restful - Extension for Flask that adds support for quickly building REST APIs.
- flask-restless - Flask extension for generating ReSTful APIs for database models defined with SQLAlchemy (or Flask-SQLAlchemy).
- sandman - Automated REST APIs for existing database-driven systems.
- restless - Framework agnostic REST framework based on lessons learned from TastyPie.
- Python Eve - Eve is an open source Python REST API framework designed for human beings. It allows to effortlessly build and deploy highly customizable, fully featured RESTful Web Services.
- Ramses - Makes RAML files executable by generating production-ready APIs from them at runtime.
- Flask-Potion - Flask-Potion is a powerful Flask extension for building RESTful JSON APIs. It also provides several Clients for easier access to the API.
- apistar - A smart Web API framework, designed for Python 3.
- Falcon - Falcon is a bare-metal Python web API framework for building high-performance microservices, app backends, and higher-level frameworks.
- FastAPI - FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. With automatic API documentation using Swagger UI and ReDoc, based on OpenAPI and JSON Schema.
Ruby
- Grape - Opinionated micro-framework for creating REST-like APIs in Ruby.
- Rails - RailsGuides: Using Rails for API-only applications.
Go
- gocrud: Go library to simplify creating, updating and deleting arbitrary depth structured data — to make building REST services fast and easy.
- go-json-rest - Thin layer on top of
net/http
that helps building RESTful APIs easily. - sleepy - RESTful micro-framework written in Go.
- restit - Go micro framework to help writing RESTful API integration test.
- go-relax - Framework of pluggable components to build RESTful API's.
- go-rest - Small and evil REST framework for Go.