617 lines
29 KiB
HTML
617 lines
29 KiB
HTML
<h1 id="awesome-rest-awesome">Awesome REST <a
|
||
href="https://github.com/sindresorhus/awesome"><img
|
||
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
|
||
alt="Awesome" /></a></h1>
|
||
<p>A collaborative list of great resources about RESTful API
|
||
architecture, development, test, and performance. Feel free to
|
||
contribute to this on-going list.</p>
|
||
<ul>
|
||
<li><a href="#design">Design</a>
|
||
<ul>
|
||
<li><a href="#guidelines">Guidelines</a></li>
|
||
</ul></li>
|
||
<li><a href="#standards">Standards</a></li>
|
||
<li><a href="#clients">Clients</a>
|
||
<ul>
|
||
<li><a href="#php-clients">PHP</a></li>
|
||
<li><a href="#javascript-clients">Client-side JavaScript</a></li>
|
||
<li><a href="#nodejs-clients">Node.js</a></li>
|
||
<li><a href="#ruby-clients">Ruby</a></li>
|
||
<li><a href="#go-clients">Go</a></li>
|
||
<li><a href="#net-clients">.Net</a></li>
|
||
<li><a href="#generators">Generators</a></li>
|
||
</ul></li>
|
||
<li><a href="#servers">Servers</a>
|
||
<ul>
|
||
<li><a href="#directly-on-top-of-a-rmdb">Directly On Top Of A
|
||
RMDB</a></li>
|
||
<li><a href="#nodejs">Node.js</a></li>
|
||
<li><a href="#php">PHP</a></li>
|
||
<li><a href="#symfony2">Symfony2</a></li>
|
||
<li><a href="#python">Python</a></li>
|
||
<li><a href="#ruby">Ruby</a></li>
|
||
<li><a href="#go">Go</a></li>
|
||
<li><a href="#java">Java</a></li>
|
||
<li><a href="#haskell">Haskell</a></li>
|
||
</ul></li>
|
||
<li><a href="#testing">Testing</a>
|
||
<ul>
|
||
<li><a href="#querying">Querying</a></li>
|
||
<li><a href="#mocking">Mocking</a></li>
|
||
<li><a href="#public-rest-apis-to-use-in-tests">Public REST APIs To Use
|
||
In Tests</a></li>
|
||
</ul></li>
|
||
<li><a href="#documentation">Documentation</a></li>
|
||
<li><a href="#api-gateway">API Gateway</a></li>
|
||
<li><a href="#saas-tools">SaaS Tools</a></li>
|
||
<li><a href="#miscellaneous">Miscellaneous</a></li>
|
||
</ul>
|
||
<h2 id="design">Design</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Architectural
|
||
Styles and the Design of Network-based Software Architectures</a> - Roy
|
||
Fielding’s dissertation defining REST</li>
|
||
<li><a href="https://github.com/interagent/http-api-design">HTTP API
|
||
design guide extracted from work on the Heroku Platform API</a></li>
|
||
<li><a
|
||
href="https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api">Best
|
||
Practices for Designing a Pragmatic RESTful API</a></li>
|
||
<li><a href="https://blog.octo.com/en/design-a-rest-api/">How to design
|
||
a REST API?</a> - Full guide tackling security, pagination, filtering,
|
||
versioning, partial answers, CORS, etc.</li>
|
||
<li><a
|
||
href="https://martinfowler.com/articles/richardsonMaturityModel.html">Richardson
|
||
Maturity Model</a> - Explained by Martin Fowler, originally presented by
|
||
Leonard Richardson at the <a
|
||
href="https://www.crummy.com/writing/speaking/2008-QCon/act3.html">QCon
|
||
2008</a>.</li>
|
||
<li><a
|
||
href="https://martinfowler.com/articles/enterpriseREST.html">Enterprise
|
||
Integration Using REST</a> - Discusses the constraints and flexibility
|
||
that you have with nonpublic APIs, and lessons learned from doing large
|
||
scale RESTful integration across multiple teams.</li>
|
||
<li><a
|
||
href="https://web.archive.org/web/20201111235328/timelessrepo.com/haters-gonna-hateoas">HATEOAS</a>
|
||
- Clear explanation on what HATEOAS is, and why you should use it.</li>
|
||
<li><a href="https://www.infoq.com/articles/webber-rest-workflow/">How
|
||
to GET a cup of coffee</a></li>
|
||
<li><a href="https://www.restapitutorial.com/">REST API Tutorial</a> -
|
||
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.</li>
|
||
<li><a
|
||
href="https://github.com/shieldfy/API-Security-Checklist">API-Security-Checklist</a>
|
||
- Best practices about REST API security</li>
|
||
</ul>
|
||
<h3 id="guidelines">Guidelines</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/adidas/api-guidelines/blob/master/rest-api-guidelines/rest.md">Adidas
|
||
REST API Guidelines</a> - Adidas REST API Guidelines define standards
|
||
and guidelines for building REST APIs at adidas.</li>
|
||
<li><a
|
||
href="https://developer.atlassian.com/server/framework/atlassian-sdk/atlassian-rest-api-design-guidelines-version-1/">Atlassian
|
||
REST API design guidelines version 1</a> - This document provides
|
||
guidelines to Atlassian developers who are designing REST APIs for
|
||
Atlassian applications.</li>
|
||
<li><a href="https://github.com/CiscoDevNet/api-design-guide">Cisco REST
|
||
API Guide</a> - Guidelines for designing REST APIs at Cisco.</li>
|
||
<li><a href="https://cloud.google.com/apis/design/">Google Cloud API
|
||
design guide</a> - Guidelines Google follows when designing Cloud APIs
|
||
and other Google APIs (REST APIs and gRPC APIs).</li>
|
||
<li><a href="https://github.com/Haufe-Lexware/api-style-guide">Haufe API
|
||
Style Guide</a> - Guidelines created by Haufe-Lexware CTO team.</li>
|
||
<li><a
|
||
href="https://github.com/Microsoft/api-guidelines/blob/vNext/Guidelines.md#readme">Microsoft
|
||
REST API Guidelines</a> - The Microsoft REST API Guidelines, as a design
|
||
principle, encourages application developers to have resources
|
||
accessible to them via a RESTful HTTP interface.</li>
|
||
<li><a href="https://github.com/zalando/restful-api-guidelines">Restful
|
||
API Guidelines by Zalando</a> - Developing Restful APIs: A Comprehensive
|
||
Set of Guidelines.</li>
|
||
</ul>
|
||
<h2 id="standards">Standards</h2>
|
||
<ul>
|
||
<li><a href="https://jsonapi.org/">JSON API</a> - Standard for building
|
||
APIs in JSON.</li>
|
||
<li><a href="https://raml.org/">RAML</a> - Simple and succinct way to
|
||
describe RESTful API.</li>
|
||
<li><a href="https://github.com/omniti-labs/jsend">JSend</a> - Simple
|
||
specification that lays down some rules for how JSON responses from web
|
||
servers should be formatted.</li>
|
||
<li><a href="https://www.odata.org/">OData</a> - Open protocol to allow
|
||
the creation and consumption of queryable and interoperable RESTful
|
||
APIs. Quite complex.</li>
|
||
<li><a
|
||
href="https://tools.ietf.org/html/draft-kelly-json-hal-06">HAL</a> -
|
||
Simple format that gives a consistent and easy way to hyperlink between
|
||
resources in your API.</li>
|
||
<li><a href="https://json-ld.org/">JSON-LD</a> - Standard for describing
|
||
Linked Data and hypermedia relations in JSON (W3C).</li>
|
||
<li><a href="https://www.hydra-cg.com/">Hydra</a> - Vocabulary for
|
||
Hypermedia-Driven Web APIs (W3C).</li>
|
||
<li><a href="https://schema.org">Schema.org</a> - Collection of schemas
|
||
describing common data models.</li>
|
||
<li><a href="https://openapis.org/">OpenAPI</a> - Formerly known as the
|
||
Swagger Specification, OpenAPI specifcation is the world’s most popular
|
||
description format for defining Restful APIs.</li>
|
||
</ul>
|
||
<h2 id="clients">Clients</h2>
|
||
<h3 id="php-clients">PHP Clients</h3>
|
||
<ul>
|
||
<li><a href="https://guzzle.readthedocs.org/en/latest/">Guzzle</a> -
|
||
HTTP client and framework for consuming RESTful web services.</li>
|
||
<li><a href="https://github.com/kriswallsmith/buzz">Buzz</a> - Another
|
||
lightweight HTTP client.</li>
|
||
<li><a href="https://github.com/Mashape/unirest-php">unirest for PHP</a>
|
||
- Simplified, lightweight HTTP client library.</li>
|
||
</ul>
|
||
<h3 id="javascript-clients">JavaScript Clients</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/mgonto/restangular">restangular</a> -
|
||
AngularJS service to handle REST API properly and easily.</li>
|
||
<li><a href="https://github.com/marmelab/restful.js">restful.js</a> - JS
|
||
client for interacting with server-side RESTful resources.</li>
|
||
<li><a href="https://github.com/basti1302/traverson">traverson</a> - A
|
||
Hypermedia API/HATEOAS Client for Node.js and the Browser</li>
|
||
<li><a
|
||
href="https://github.com/mulesoft/raml-client-generator">raml-client-generator</a>
|
||
- Generates static client libs for js.</li>
|
||
</ul>
|
||
<h3 id="node.js-clients">Node.js Clients</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/danwrong/restler">restler</a> - REST
|
||
client library for node.js.</li>
|
||
<li><a href="https://github.com/Mashape/unirest-nodejs">unirest for
|
||
Node.js</a> - Simplified, lightweight HTTP client library.</li>
|
||
</ul>
|
||
<h3 id="ruby-clients">Ruby Clients</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rest-client/rest-client">RESTClient</a>
|
||
- Simple HTTP and REST client for Ruby, inspired by microframework
|
||
syntax for specifying actions.</li>
|
||
<li><a href="https://github.com/balvig/spyke">Spyke</a> - Interact with
|
||
REST services in an ActiveRecord-like manner.</li>
|
||
<li><a href="https://github.com/excon/excon">excon</a> - 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.</li>
|
||
<li><a href="https://github.com/jnunemaker/httparty">httparty</a> -
|
||
Makes HTTP fun again!</li>
|
||
<li><a
|
||
href="https://ruby-doc.org/3.2.0/stdlibs/net/Net/HTTP.html">Net::HTTP</a>
|
||
- Net::HTTP provides a rich library which can be used to build HTTP
|
||
user-agents.</li>
|
||
<li><a
|
||
href="https://github.com/zlx/raml-ruby-client-generator">raml-ruby-client-generator</a>
|
||
- Auto generate API client from a RAML file.</li>
|
||
</ul>
|
||
<h3 id="go-clients">Go Clients</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/bndr/gopencils">gopencils</a> - Small
|
||
and simple package to easily consume REST APIs.</li>
|
||
<li><a href="https://github.com/go-resty/resty">resty</a> - Simple HTTP
|
||
and REST client for Go inspired by Ruby rest-client.</li>
|
||
</ul>
|
||
<h3 id="net-clients">.NET Clients</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/restsharp/RestSharp">RestSharp</a> -
|
||
Simple REST and HTTP API client for .NET</li>
|
||
<li><a href="https://github.com/reactiveui/refit">Refit</a> - The
|
||
automatic type-safe REST library for Xamarin and .NET</li>
|
||
<li><a href="https://flurl.dev">Flurl</a> - Fluent, portable, testable
|
||
REST/HTTP client library</li>
|
||
<li><a href="https://github.com/canton7/RestEase">RestEase</a> -
|
||
Easy-to-use typesafe REST API client library, which is simple and
|
||
customisable. Heavily inspired by Refit</li>
|
||
<li><a
|
||
href="https://github.com/jgiacomini/Tiny.RestClient">Tiny.RestClient</a>
|
||
- Simpliest Fluent REST client for .NET.</li>
|
||
<li><a href="https://github.com/letsar/RestLess">RestLess</a> - The
|
||
automatic type-safe-reflectionless REST API client library for .Net
|
||
Standard.</li>
|
||
<li><a href="https://github.com/Respawnsive/Apizr">Apizr</a> -
|
||
Refit-based web api client, but resilient (retry, connectivity, cache,
|
||
auth, log, priority, etc…).</li>
|
||
</ul>
|
||
<h3 id="generators">Generators</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/OpenAPITools/openapi-generator">openapi-generator</a>
|
||
- OpenAPI Generator allows generation of API client libraries (SDK
|
||
generation), server stubs, documentation and configuration automatically
|
||
given an OpenAPI Spec (v2, v3).</li>
|
||
</ul>
|
||
<h2 id="servers">Servers</h2>
|
||
<h3 id="directly-on-top-of-a-rmdb">Directly On Top Of A RMDB</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/begriffs/postgrest">postgrest</a> -
|
||
Serve a fully RESTful API directly from an existing PostgreSQL
|
||
database.</li>
|
||
<li><a
|
||
href="http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/">MySQL
|
||
HTTP plugin</a> - Simple REST-like / CRUD server for any MySQL
|
||
database.</li>
|
||
<li><a href="https://github.com/prest/prest">pREST</a> - A fully RESTful
|
||
API from any existing PostgreSQL database written in Go.</li>
|
||
</ul>
|
||
<h3 id="node.js">Node.js</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/restify/node-restify">node-restify</a> -
|
||
Framework specifically meant for REST API.</li>
|
||
<li><a href="https://sailsjs.org/">Sails.js</a> - Node.js Web framework
|
||
embedding a command to generate automatically a REST API.</li>
|
||
<li><a href="https://github.com/jspears/mers">mers</a> - Express service
|
||
exposing Mongoose finders as RESTful API.</li>
|
||
<li><a
|
||
href="https://github.com/flatiron/resourceful">flatiron/resourceful</a>
|
||
- Isomorphic Resource engine for JavaScript.</li>
|
||
<li><a href="https://loopback.io/">loopback</a> - Powerful Node.js
|
||
framework for creating APIs and easily connecting to backend data
|
||
sources.</li>
|
||
<li><a href="https://feathersjs.com/">Feathers</a> - is a real-time,
|
||
micro-service web framework that gives you control over your data via
|
||
RESTful resources, sockets and flexible plug-ins.</li>
|
||
<li><a href="https://github.com/thomas4019/expressa">Expressa</a> -
|
||
Express middleware for creating APIs from JSON schemas with a simple
|
||
admin editor and permissions model.</li>
|
||
<li><a href="https://github.com/JKHeadley/rest-hapi">rest-hapi</a> -
|
||
Generate RESTful API based on mongoose models that supports relational
|
||
data.</li>
|
||
<li><a href="https://github.com/nestjsx/crud">Nestjsx/crud</a> -
|
||
Generate CRUD controllers and services for RESTful API with NestJS and
|
||
TypeORM.</li>
|
||
</ul>
|
||
<h3 id="php">PHP</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/marmelab/microrest.php">Microrest</a> -
|
||
Micro-web application providing a REST API on top of any relational
|
||
database.</li>
|
||
<li><a href="https://github.com/willdurand/Negotiation">Negotiation</a>
|
||
- Content negotiation library.</li>
|
||
<li><a href="https://github.com/leedavis81/drest">Drest</a> - Library
|
||
for exposing Doctrine entities as REST resource endpoints.</li>
|
||
<li><a href="https://github.com/Luracast/Restler">Restler</a> -
|
||
Lightweight framework to expose PHP methods as RESTful web API.</li>
|
||
<li><a href="https://github.com/blongden/hal">HAL</a> - Hypertext
|
||
Application Language (HAL) builder library.</li>
|
||
<li><a
|
||
href="https://github.com/zfcampus/zf-apigility-skeleton">Apigility</a> -
|
||
API builder built with Zend Framework 2.</li>
|
||
<li><a href="https://github.com/phprest/phprest">phprest</a> -
|
||
Specialized REST microframework for PHP.</li>
|
||
<li><a href="https://github.com/willdurand/Hateoas">Hateoas</a> - PHP
|
||
library to support implementing representations for HATEOAS REST web
|
||
services.</li>
|
||
<li><a href="https://github.com/apioo/fusio">Fusio</a> - Open source API
|
||
management platform.</li>
|
||
</ul>
|
||
<h4 id="symfony2">Symfony2</h4>
|
||
<ul>
|
||
<li><a
|
||
href="https://williamdurand.fr/2012/08/02/rest-apis-with-symfony2-the-right-way/">REST
|
||
APIs with Symfony2: the Right Way</a> - Complete guide to build a
|
||
state-of-the-art REST API with Symfony2 framework.</li>
|
||
<li><a
|
||
href="https://github.com/FriendsOfSymfony/FOSRestBundle">FOSRestBundle</a>
|
||
- Bundle handling view, routing, error handling, etc. for your REST
|
||
API.</li>
|
||
<li><a
|
||
href="https://github.com/stanlemon/rest-bundle">stanlemon/rest-bundle</a>
|
||
- Build a REST API based on Doctrine entities using conventions over
|
||
configuration.</li>
|
||
<li><a href="http://lakion.com/lionframe">lakion/Lionframe</a> - Glu
|
||
between several community libraries to ease API development.</li>
|
||
<li><a
|
||
href="https://github.com/willdurand/BazingaHateoasBundle">BazingaHateoasBundle</a>
|
||
- Integrate the <a
|
||
href="https://github.com/willdurand/Hateoas">Hateoas</a> library into a
|
||
Symfony2 application.</li>
|
||
<li><a href="https://github.com/gimler/symfony-rest-edition">Symfony
|
||
REST Edition</a> - Start with a Symfony2 application with all
|
||
REST-friendly bundles pre-configured.</li>
|
||
<li><a
|
||
href="https://github.com/marmelab/NgAdminGeneratorBundle">NgAdminGeneratorBundle</a>
|
||
- Boostrap ng-admin configuration based on
|
||
<code>stanlemon/rest-bundle</code>.</li>
|
||
<li><a
|
||
href="https://github.com/dunglas/DunglasApiBundle">DunglasApiBundle</a>
|
||
- Build a REST API which follow Hydra/JSON-LD specification.</li>
|
||
<li><a href="https://github.com/api-platform/api-platform">API
|
||
Platform</a> - Specialize Symfony edition for the creation of hypermedia
|
||
REST APIs.</li>
|
||
<li><a
|
||
href="https://github.com/nelmio/NelmioApiDocBundle">NelmioApiDocBundle</a>
|
||
- Generate documentation for your REST API from annotations.</li>
|
||
</ul>
|
||
<h3 id="powershell">PowerShell</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/Badgerati/Pode">Pode</a> - Pode is an
|
||
cross-platform, open-source, community-supported web server and REST API
|
||
framework for PowerShell developers</li>
|
||
</ul>
|
||
<h3 id="python">Python</h3>
|
||
<ul>
|
||
<li><a href="https://www.django-rest-framework.org/">Django REST
|
||
framework</a> - Powerful and flexible toolkit that makes it easy to
|
||
build Web APIs.</li>
|
||
<li><a href="http://tastypieapi.org/">django-tastypie</a> - Creating
|
||
delicious APIs for Django apps.</li>
|
||
<li><a href="https://flask-restful.readthedocs.org/">flask-restful</a> -
|
||
Extension for Flask that adds support for quickly building REST
|
||
APIs.</li>
|
||
<li><a
|
||
href="https://flask-restless.readthedocs.org/en/latest/">flask-restless</a>
|
||
- Flask extension for generating ReSTful APIs for database models
|
||
defined with SQLAlchemy (or Flask-SQLAlchemy).</li>
|
||
<li><a href="https://github.com/jeffknupp/sandman">sandman</a> -
|
||
Automated REST APIs for existing database-driven systems.</li>
|
||
<li><a href="https://restless.readthedocs.org/en/latest/">restless</a> -
|
||
Framework agnostic REST framework based on lessons learned from
|
||
TastyPie.</li>
|
||
<li><a href="https://python-eve.org/">Python Eve</a> - 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.</li>
|
||
<li><a href="https://ramses.readthedocs.org/en/stable/">Ramses</a> -
|
||
Makes RAML files executable by generating production-ready APIs from
|
||
them at runtime.</li>
|
||
<li><a href="https://github.com/biosustain/potion">Flask-Potion</a> -
|
||
Flask-Potion is a powerful Flask extension for building RESTful JSON
|
||
APIs. It also provides several Clients for easier access to the
|
||
API.</li>
|
||
<li><a href="https://github.com/encode/apistar">apistar</a> - A smart
|
||
Web API framework, designed for Python 3.</li>
|
||
<li><a href="https://github.com/falconry/falcon">Falcon</a> - Falcon is
|
||
a bare-metal Python web API framework for building high-performance
|
||
microservices, app backends, and higher-level frameworks.</li>
|
||
<li><a href="https://github.com/tiangolo/fastapi">FastAPI</a> - 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.</li>
|
||
<li><a href="https://zato.io">Zato</a> - Platform for building
|
||
server-side integrations, automations and API backends in Python.</li>
|
||
</ul>
|
||
<h3 id="ruby">Ruby</h3>
|
||
<ul>
|
||
<li><a href="https://www.ruby-grape.org">Grape</a> - Opinionated
|
||
micro-framework for creating REST-like APIs in Ruby.</li>
|
||
<li><a href="https://guides.rubyonrails.org/api_app.html">Rails</a> -
|
||
RailsGuides: Using Rails for API-only applications.</li>
|
||
</ul>
|
||
<h3 id="go">Go</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/manishrjain/gocrud">gocrud</a>: Go
|
||
library to simplify creating, updating and deleting arbitrary depth
|
||
structured data — to make building REST services fast and easy.</li>
|
||
<li><a href="https://github.com/ant0ine/go-json-rest">go-json-rest</a> -
|
||
Thin layer on top of <code>net/http</code> that helps building RESTful
|
||
APIs easily.</li>
|
||
<li><a href="https://github.com/dougblack/sleepy">sleepy</a> - RESTful
|
||
micro-framework written in Go.</li>
|
||
<li><a href="https://github.com/yookoala/restit">restit</a> - Go micro
|
||
framework to help writing RESTful API integration test.</li>
|
||
<li><a href="https://github.com/codehack/go-relax">go-relax</a> -
|
||
Framework of pluggable components to build RESTful API’s.</li>
|
||
<li><a href="https://github.com/ungerik/go-rest">go-rest</a> - Small and
|
||
evil REST framework for Go.</li>
|
||
<li><a href="https://github.com/emicklei/go-restful">go-restful</a> - A
|
||
declarative highly readable framework for building restful API’s.</li>
|
||
<li><a href="https://github.com/bahlo/goat">Goat</a> - Minimalistic REST
|
||
API server in Go.</li>
|
||
<li><a href="https://github.com/resoursea/api">Resoursea</a> - REST
|
||
framework for quickly writing resource based services.</li>
|
||
</ul>
|
||
<h3 id="java">Java</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/RestExpress/RestExpress">RestExpress</a>
|
||
- Netty-based, highly performant, lightweight, container-less,
|
||
plugin-extensible, framework that is ideal for microservice
|
||
architectures.</li>
|
||
<li><a href="https://github.com/vert-x3/vertx-web">Vertx-Web</a> -
|
||
Vert.x-Web is a set of building blocks for building web applications
|
||
with Vert.x, a toolkit for building reactive applications on the
|
||
JVM.</li>
|
||
<li><a href="https://github.com/dropwizard/dropwizard">Dropwizard</a> -
|
||
A framework for developing ops-friendly, high-performance, RESTful web
|
||
services.</li>
|
||
</ul>
|
||
<h3 id="scala">Scala</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/mesosphere/chaos">Chaos</a> - A
|
||
lightweight framework for writing REST services in Scala.</li>
|
||
</ul>
|
||
<h3 id="haskell">Haskell</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/silkapp/rest">Rest for Haskell</a> -
|
||
This package allows you to create REST APIs in Haskell. These APIs can
|
||
be run in different web frameworks. They can also be used to
|
||
automatically generate documentation as well as client libraries.</li>
|
||
</ul>
|
||
<h2 id="testing">Testing</h2>
|
||
<h3 id="querying">Querying</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/jkbrzt/httpie">httpie</a> - Command line
|
||
HTTP client, far more dev-friendly than <code>curl</code>.</li>
|
||
<li><a href="https://github.com/micha/resty">resty</a> - Little command
|
||
line REST client that you can use in pipelines (bash or zsh).</li>
|
||
<li><a href="https://github.com/stedolan/jq">jq</a> - Command line JSON
|
||
processor, to use in combination with a command-line HTTP client like
|
||
cURL.</li>
|
||
<li><a href="https://www.httpmaster.net">HttpMaster</a> - GUI tool for
|
||
testing REST APIs and services. Windows OS only.</li>
|
||
<li><a href="https://github.com/cloudhead/http-console">Http-console</a>
|
||
- Command line interface for HTTP that let you <em>speak HTTP like a
|
||
local</em></li>
|
||
<li><a href="https://github.com/eliangcs/http-prompt">HTTP Prompt</a> -
|
||
HTTP Prompt is an interactive command-line HTTP client featuring
|
||
autocomplete and syntax highlighting, built on HTTPie and
|
||
prompt_toolkit.</li>
|
||
<li><a
|
||
href="https://github.com/rest-assured/rest-assured">rest-assured</a> -
|
||
Java DSL for easy testing of REST services.</li>
|
||
<li><a href="https://github.com/getinsomnia/insomnia">Insomnia</a> -
|
||
Cross-platform HTTP and GraphQL Client</li>
|
||
<li><a
|
||
href="https://extendsclass.com/rest-client-online.html">ExtendsClass</a>
|
||
- Make HTTP requests with a simple web-based HTTP client.</li>
|
||
<li><a href="https://testmace.com">TestMace</a> - Cross-platform simple
|
||
but powerful IDE for API automation testing.</li>
|
||
<li><a href="https://github.com/warmuuh/milkman">Milkman</a> -
|
||
Extensible cross-platform request/response workbench, not only for http
|
||
calls.</li>
|
||
<li><a
|
||
href="https://github.com/schemathesis/schemathesis">Schemathesis</a> -
|
||
Property-based testing tool for web applications built with Open API and
|
||
GraphQL specifications.</li>
|
||
<li><a href="https://github.com/stepci/stepci">Step CI</a> - Open-source
|
||
framework for API Quality Assurance, which tests REST, GraphQL and gRPC
|
||
automated and from Open API spec.</li>
|
||
<li><a href="https://github.com/restqa/restqa">RestQA</a> - A REST API
|
||
testing Framework based on BDD / Gherkin to manage microservice local
|
||
testing.</li>
|
||
</ul>
|
||
<h3 id="mocking">Mocking</h3>
|
||
<ul>
|
||
<li><a href="https://requestbin.com/">RequestBin</a> - Inspect and debug
|
||
webhook requests sent by your clients or third-party APIs.</li>
|
||
<li><a href="https://httpbin.org">httpbin</a> - HTTP request and
|
||
response service - a/k/a Swiss Army Knife for HTTP.</li>
|
||
<li><a href="https://github.com/marmelab/FakeRest">FakeRest</a> -
|
||
Redirect fetch() calls to a client-side fake REST API.</li>
|
||
<li><a href="https://github.com/typicode/json-server">json-server</a> -
|
||
Serve a REST API from fixture files using quick prototyping.</li>
|
||
<li><a href="https://www.mocky.io/">Mocky.io</a> - Free online service
|
||
to create fake HTTP responses.</li>
|
||
<li><a href="https://www.mock-server.com/">MockServer</a> - Easy mocking
|
||
of any system you integrate with via HTTP or HTTPS.</li>
|
||
<li><a href="https://github.com/darklynx/request-baskets">Request
|
||
Baskets</a> - Service to collect HTTP requests and inspect them via
|
||
RESTful API or web UI.</li>
|
||
<li><a href="https://github.com/iridakos/duckrails">DuckRails</a> - Mock
|
||
quickly & dynamically API endpoints.</li>
|
||
<li><a href="https://mockoon.com">Mockoon</a> - Easily create mock APIs
|
||
locally. No remote deployment, no account required, open source.</li>
|
||
<li><a href="https://mockintosh.io/">Mockintosh</a> - A mock server
|
||
generator that’s capable to generate RESTful APIs and communicate with
|
||
the message queues to mimick asynchronous tasks.</li>
|
||
</ul>
|
||
<h3 id="validating">Validating</h3>
|
||
<ul>
|
||
<li><a href="http://json-schema.org/">JSON Schema</a> - Declarative
|
||
language that allows you to annotate and validate JSON documents</li>
|
||
</ul>
|
||
<h3 id="public-rest-apis-to-use-in-tests">Public REST APIs To Use In
|
||
Tests</h3>
|
||
<ul>
|
||
<li><a href="https://deckofcardsapi.com">Deck of Cards API</a> - Open
|
||
API for simulating a deck of cards.</li>
|
||
<li><a href="https://github.com/public-apis/public-apis">Public APIS</a>
|
||
- Explore The Largest API Directory In The Galaxy.</li>
|
||
<li><a href="https://developer.marvel.com/">Marvel Comics API</a> -
|
||
Query characters, stories, events about Marvel superheroes.</li>
|
||
<li><a href="https://jsonplaceholder.typicode.com/">JSON Placeholder</a>
|
||
- Free online REST service that you can use whenever you need some fake
|
||
data.</li>
|
||
<li><a href="https://APIs.guru">APIs.guru</a> - Wikipedia for Web APIs,
|
||
each API has OpenAPI/Swagger description.</li>
|
||
<li><a href="https://theCatAPI.com">The Cat API</a> - Public API for
|
||
Cats Images, Facts and Jokes.</li>
|
||
<li><a href="https://mockae.com/">Mockae</a> - Fake REST API powered by
|
||
Lua.</li>
|
||
</ul>
|
||
<h2 id="documentation">Documentation</h2>
|
||
<ul>
|
||
<li><a href="https://swagger.io/">Swagger</a> - Documentation/querying
|
||
web interface for REST APIs.</li>
|
||
<li><a href="https://apidocjs.com/">API doc</a> - Inline Documentation
|
||
for RESTful web APIs.</li>
|
||
<li><a href="https://github.com/raml2html/raml2html">raml2html</a> -
|
||
Generates HTML documentation from a RAML file.</li>
|
||
<li><a href="https://github.com/Rebilly/ReDoc/">ReDoc</a> -
|
||
OpenAPI/Swagger-powered three-panel documentation.</li>
|
||
<li><a href="https://github.com/lord/slate">Slate</a> - Beautiful and
|
||
responsive three-panel API documentation using Middleman.</li>
|
||
<li><a href="https://github.com/opticdev/optic">Optic</a> - Maintain an
|
||
accurate API specification without writing OpenAPI/Swagger. Works with
|
||
any Stack</li>
|
||
</ul>
|
||
<h2 id="api-gateway">API Gateway</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Kong/kong">Kong</a> - Scalable,
|
||
distributed, and plugin oriented API gateway backed by Nginx.</li>
|
||
<li><a href="https://github.com/TykTechnologies/tyk">Tyk API Gateway</a>
|
||
- Lightweight API gateway with analytics logging, written in Go.</li>
|
||
<li><a href="https://github.com/NREL/api-umbrella">API Umbrella</a> -
|
||
API management platform for exposing web services, with web interface
|
||
and analytics, written in Lua.</li>
|
||
<li><a href="https://github.com/wso2/product-apim">WSO2 API
|
||
Management</a> - API management tool with lightweight gateway and API
|
||
lifecycle management, written in Java.</li>
|
||
<li><a href="https://github.com/ExpressGateway/express-gateway">Express
|
||
Gateway</a> - Microservices API Gateway built on top of ExpressJS
|
||
(Node.js).</li>
|
||
<li><a href="https://github.com/devopsfaith/krakend">KrakenD</a> - Ultra
|
||
performant API Gateway with middleware. Written in Go.</li>
|
||
<li><a href="https://aws.amazon.com/api-gateway/">AWS API Gateway</a> -
|
||
Fully managed service that helps developers to create, publish,
|
||
maintain, monitor, and secure APIs at any scale.</li>
|
||
</ul>
|
||
<h2 id="saas-tools">SaaS Tools</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/NangoHQ/nango">Nango</a> - Native
|
||
integrations framework to consume REST APIs (open-source).</li>
|
||
<li><a href="https://www.runscope.com/">Runscope</a> - Automated API
|
||
Monitoring & Testing.</li>
|
||
<li><a href="https://ping-api.com/">Ping-API</a> - Automated API
|
||
Monitoring & Testing.</li>
|
||
<li><a href="https://apiary.io/">Apiary</a> - Collaborative design,
|
||
instant API mock, generated documentation, integrated code samples,
|
||
debugging and automated testing.</li>
|
||
<li><a href="https://aws.amazon.com/api-gateway/">Amazon API Gateway</a>
|
||
- Amazon API Gateway is a fully managed service that makes it easy for
|
||
developers to create, publish, maintain, monitor, and secure APIs at any
|
||
scale.</li>
|
||
<li><a href="https://apigee.com">Apigee</a> - Apigee is the leading
|
||
provider of API technology and services for enterprises and
|
||
developers.</li>
|
||
<li><a href="https://www.3scale.net/">3scale</a> - Nginx based API
|
||
gateway to integrate internal and external API services with 3scale’s
|
||
API Management Platform.</li>
|
||
<li><a href="https://assertible.com">Assertible</a> - Continuously test
|
||
and monitor your APIs after deployments and across environments.</li>
|
||
<li><a href="https://www.moesif.com">Moesif</a> - API Analytics for
|
||
Debugging, Monitoring, and Usage Tracking for RESTful and GraphQL.</li>
|
||
<li><a href="https://beeceptor.com/">Beeceptor</a> - An HTTP inspecting,
|
||
mocking and proxing service. Gives named endpoints for creating mock API
|
||
endpoints and simulate responses.</li>
|
||
<li><a href="https://apitally.io">Apitally</a> - Analytics, request
|
||
logging and monitoring for REST APIs with a focus on simplicity and data
|
||
privacy.</li>
|
||
</ul>
|
||
<h2 id="miscellaneous">Miscellaneous</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/marmelab/react-admin">react-admin</a> -
|
||
Add a ReactJS admin GUI to any RESTful API.</li>
|
||
<li><a href="https://github.com/marmelab/ng-admin">ng-admin</a> - Add an
|
||
AngularJS admin GUI to any RESTful API.</li>
|
||
<li><a
|
||
href="https://github.com/swagger-api/swagger-codegen">swagger-codegen</a>
|
||
- Auto generation of client libraries or server stubs given an OpenAPI
|
||
specification (formerly known as the Swagger Specification).</li>
|
||
<li><a href="https://github.com/ForestAdmin/lumber">Lumber</a> -
|
||
Generate the admin interface of your application.</li>
|
||
<li><a href="https://linx.software">Linx</a> - Low-code API platform.
|
||
Build, debug and host REST APIs</li>
|
||
</ul>
|
||
<h2 id="license">License</h2>
|
||
<p><a href="httsp://creativecommons.org/licenses/by/4.0/"><img
|
||
src="https://i.creativecommons.org/l/by/4.0/88x31.png"
|
||
alt="Creative Commons License" /></a></p>
|
||
<p>This work is licensed under a <a
|
||
href="https://creativecommons.org/licenses/by/4.0/">Creative Commons
|
||
Attribution 4.0 International License</a>.</p>
|
||
<p><a href="https://github.com/marmelab/awesome-rest">rest.md
|
||
Github</a></p>
|