Files
awesome-awesomeness/html/api.html
2025-07-18 23:13:11 +02:00

322 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-api-awesome-build-status">Awesome API <a
href="https://github.com/sindresorhus/awesome"><img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></a> <a
href="https://travis-ci.org/Kikobeats/awesome-api"><img
src="https://img.shields.io/travis/Kikobeats/awesome-api/master.svg?style=flat-square"
alt="Build Status" /></a></h1>
<blockquote>
<p>A curated list of awesome resources for design and implement RESTful
APIs.</p>
</blockquote>
<h2 id="design">Design</h2>
<h3 id="overview">Overview</h3>
<blockquote>
<p>REST allows us to create services and applications that can be used
by any device or client who understands HTTP.</p>
</blockquote>
<ul>
<li><a
href="http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api">Best
Practices for Designing a Pragmatic RESTful API</a> [<a
href="https://elbauldelprogramador.com/buenas-practicas-para-el-diseno-de-una-api-restful-pragmatica/">spanish
version</a>].</li>
<li><a
href="https://betimdrenica.wordpress.com/2015/03/09/ideal-rest-api-design/">Ideal
REST API Design</a>.</li>
<li><a
href="https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/">StackOverflow
best REST API Design</a>.</li>
<li><a
href="https://devcenter.heroku.com/articles/platform-api-reference">Heroku
API Reference</a>.</li>
<li><a href="https://github.com/Mashape/apiglossary">API Terms
Glossary</a>.</li>
<li><a href="https://github.com/interagent/http-api-design">HTTP API
Design by Heroku</a>.</li>
<li><a href="http://www.restapitutorial.com">Learn REST: A RESTful
Tutorial</a>.</li>
<li><a href="https://github.com/lambda2/rapis">RAPIS: A REST API
Standard for the 21th century</a>.</li>
<li><a
href="https://github.com/watson-developer-cloud/api-guidelines">IBM
Watson REST API Guidelines</a>.</li>
<li><a href="https://github.com/Microsoft/api-guidelines">Microsoft REST
API Guidelines</a>.</li>
<li><a href="http://zalando.github.io/restful-api-guidelines/">Zalando
RESTful API and Event Scheme Guidelines</a></li>
<li><a
href="https://www.gov.uk/guidance/gds-api-technical-and-data-standards">gov.uk
API technical and data standards</a></li>
<li><a
href="https://github.com/stickfigure/blog/wiki/How-to-%28and-how-not-to%29-design-REST-APIs">How
to (and how not to) design REST APIs</a></li>
</ul>
<h3 id="status-code">Status Code</h3>
<blockquote>
<p>When you are using a REST design you have to provide the HTTP status
code that are the more appropriated to respond to the request.</p>
</blockquote>
<ul>
<li><a href="http://www.restapitutorial.com/httpstatuscodes.html">HTTP
Status code table in RESTAPITutorial</a>.</li>
<li><a href="https://httpstatuses.com/">httpstatuses.com</a></li>
<li><a
href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">Status
code definition in W3C</a>.</li>
<li><a href="https://tryhexadecimal.com/guides/http/">HTTP Status Code
Guides</a></li>
</ul>
<h3 id="authentication">Authentication</h3>
<ul>
<li><a href="https://github.com/teesloane/Auth-Boss">Auth Boss</a>
Learn about different authentication methodologies on the web.</li>
<li><a
href="https://www.owasp.org/index.php/Authentication_Cheat_Sheet">Authentication
Cheat Sheet</a>.</li>
<li><a
href="https://stormpath.com/blog/the-problem-with-api-authentication-in-express/">The
Problem With API Authentication in Express</a>.</li>
<li><a
href="https://blog.risingstack.com/web-authentication-methods-explained/">Web
Authentication Methods Explained</a>.</li>
</ul>
<h4 id="jwt">JWT</h4>
<blockquote>
<p>JSON Web Token (JWT) is a compact, URL-safe means of representing
claims to be transferred between two parties.</p>
</blockquote>
<ul>
<li><a
href="https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies/">10
Things You Should Know about Tokens</a>.</li>
<li><a
href="https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/">Cookies
vs Tokens</a>.</li>
<li><a
href="https://tools.ietf.org/html/draft-ietf-oauth-json-web-token">JWT
Draft in IETF</a>.</li>
<li><a href="http://jwt.io/">JWT.io</a>.</li>
<li><a
href="https://auth0.com/blog/2014/12/02/using-json-web-tokens-as-api-keys/">Using
JSON Web Tokens as API Keys</a>.</li>
<li><a href="http://info.meteor.com/blog/session-cookies">Why Meteor
doesnt use session cookies</a>.</li>
<li><a
href="https://www.moesif.com/blog/technical/restful-apis/Authorization-on-RESTful-APIs/">Guide
on API authentication and authorization</a>.</li>
</ul>
<h3 id="authorization">Authorization</h3>
<h4 id="oauth">OAuth</h4>
<blockquote>
<p>An open protocol to allow secure authorization in a simple and
standard method from web, mobile and desktop applications</p>
</blockquote>
<ul>
<li><a
href="https://github.com/Kong/mashape-oauth/blob/master/FLOWS.md">The
OAuth Bible by Mashape</a>.</li>
</ul>
<h2 id="caching">Caching</h2>
<ul>
<li><a
href="https://jakearchibald.com/2016/caching-best-practices/">Caching
best practices &amp; max-age gotchas</a>.</li>
<li><a
href="https://devcenter.heroku.com/articles/increasing-application-performance-with-http-cache-headers">Increasing
Application Performance with HTTP Cache Headers</a>.</li>
<li><a
href="https://support.cloudflare.com/hc/en-us/articles/200504045-Using-Cloudflare-with-your-API">Using
Cloudflare with your API</a>.</li>
</ul>
<h2 id="security">Security</h2>
<ul>
<li><a href="https://www.npmjs.com/package/helmet">Helmet, help secure
Express/Connect apps with various HTTP headers</a>.</li>
<li><a
href="https://github.com/GitGuardian/APISecurityBestPractices">APISecurityBestPractices</a>.</li>
<li><a href="https://nodesecurity.io/">Node Security Project</a>.</li>
<li><a
href="https://blog.risingstack.com/node-js-security-checklist/">Node.js
Security Checklist</a>.</li>
</ul>
<h2 id="format">Format</h2>
<ul>
<li><a href="http://stateless.co/hal_specification.html">HAL</a>
Simple format that gives a consistent and easy way to hyperlink between
resources in your API (see: <a href="#hateoas">HATEOAS</a>).</li>
<li><a href="http://www.hydra-cg.com/">Hydra</a> Vocabulary for
Hypermedia-Driven Web APIs (W3C).</li>
<li><a href="http://labs.omniti.com/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="http://jsonapi.org/">JSON API</a> Standard for building
APIs in JSON.</li>
<li><a href="http://json-ld.org/">JSON-LD</a> Standard for describing
Linked Data and hypermedia relations in JSON (W3C).</li>
<li><a href="http://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="http://raml.org/">RAML</a> Simple and succinct way to
describe RESTful API.</li>
<li><a href="http://schema.org">Schema.org</a> Collection of schemas
describing common data models.</li>
</ul>
<h2 id="discover">Discover</h2>
<blockquote>
<p>Need a API for your projects?</p>
</blockquote>
<h3 id="curated-list">Curated list</h3>
<ul>
<li><a href="https://github.com/Abhishaker17/Awesome-APIs">Awesome APIs
Directory</a> A public list of APIs from round the web.</li>
<li><a href="https://github.com/toddmotto/public-apis">public apis</a>
A collective list of public JSON APIs for use in web development.</li>
</ul>
<h3 id="directory">Directory</h3>
<ul>
<li><a href="http://apis.io">apis.io</a> API Search service to help
discover APIs on the web.</li>
<li><a
href="https://www.programmableweb.com/apis/directory">ProgrammableWeb</a>.</li>
</ul>
<h2 id="testing">Testing</h2>
<h3 id="querying">Querying</h3>
<ul>
<li><a href="https://firecamp.io">Firecamp</a> Protocol agnostic API
testing client which help you test and manage RestAPIs, GraphQL,
Websocket and many more.</li>
<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="http://www.httpmaster.net">HttpMaster</a> GUI tool for
testing REST APIs and services. Windows OS only.</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://insomnia.rest/">Insomina</a> A Fancy HTTP REST
Client.</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://testmace.com">TestMace</a> A modern powerful
crossplatform tool for working with API and creating automated API
tests.</li>
</ul>
<h3 id="mocking">Mocking</h3>
<ul>
<li><p><a href="https://beeceptor.com">Beeceptor</a> - Beeceptor helps
intercepting API calls and mocking them selectively. Creates an endpoint
for wrapping original API and routes requests.</p></li>
<li><p><a href="https://github.com/marmelab/FakeRest">FakeRest</a>
Patch XMLHttpRequest to fake a REST API client-side.</p></li>
<li><p><a href="http://jsonplaceholder.typicode.com/">JSON
Placeholder</a> Free online REST service that you can use whenever you
need some fake data.</p></li>
<li><p><a href="https://github.com/typicode/json-server">json-server</a>
Get a full fake REST API with zero coding in less than 30
seconds.</p></li>
<li><p><a href="http://www.mocky.io/">Mocky.io</a> Free online service
to create fake HTTP responses.</p></li>
<li><p><a href="https://fakeql.com/">FakeQL</a> Mainly focused on
GraphQL, but can mock RESTful APIs, as well.</p></li>
<li><p><a href="https://pipl.ir">PIPL API</a> Free and public API that
generates random and fake peoples data in JSON</p></li>
<li><p><a href="https://apimocha.com">API Mocha</a> - Free online
service providing fake REST API endpoints, create customizable responses
and download rules as a Postman collection. ### Response</p></li>
<li><p><a href="https://httpstat.us">httpstat.us</a> A super simple
service for generating different HTTP codes.</p></li>
<li><p><a href="https://httpbin.org">httpbin</a> httpbin(1): HTTP
Request &amp; Response Service.</p></li>
<li><p><a href="https://badssl.com">badssl</a> Testing clients against
bad SSL configs.</p></li>
</ul>
<h2 id="documentation">Documentation</h2>
<blockquote>
<p>One of the most important part of your API is have a good
documentation and updated with the code.</p>
</blockquote>
<h3 id="free">Free</h3>
<ul>
<li><a href="https://github.com/tmcw/docbox">docbox</a>.</li>
<li><a href="https://github.com/tripit/slate">slate</a>.</li>
<li><a href="https://github.com/mpociot/whiteboard">whiteboard</a>.</li>
</ul>
<h3 id="services">Services</h3>
<ul>
<li><a href="https://docs.rapidapi.com/docs">RapidAPI</a>.</li>
<li><a href="https://readme.io/">Readme.io</a>.</li>
<li><a href="https://www.gitbook.com/">GitBook</a>.</li>
</ul>
<h2 id="logging">Logging</h2>
<ul>
<li><a href="https://pm2.keymetrics.io">PM2 by keymetrics</a>.</li>
<li><a href="https://github.com/expressjs/morgan">morgan for
expressjs</a>.</li>
<li><a href="https://www.moesif.com/features/api-logs">Moesif API
Analytics</a>. Log and Understand API Traffic.</li>
</ul>
<h2 id="modeling-and-saas">Modeling and SaaS</h2>
<blockquote>
<p>Based in DDD (Domain Driven Development). Generates automatically
APIs in different languages.</p>
</blockquote>
<ul>
<li><a
href="https://www.producthunt.com/alternatives/api-plug">Alteranatives
to API Plug</a> 9 alternative and related products to api plug.</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://wrapapi.com">wrapAPI, Build an API on top of any
website</a>.</li>
<li><a href="https://www.import.io/">import.io, turn web pages into
Data</a>.</li>
<li><a href="http://raml.org">RAML, RESTful API Modeling
Language</a>.</li>
<li><a href="https://www.runscope.com/">Runscope</a> Automated API
Monitoring &amp; Testing.</li>
<li><a href="http://swagger.io">swagger.io</a>.</li>
</ul>
<h2 id="libraries">Libraries</h2>
<blockquote>
<p>Used it to improve your workflow</p>
</blockquote>
<ul>
<li><a
href="https://github.com/microlinkhq/async-ratelimiter">async-ratelimiter</a>
Rate limit made simple, easy, async, backed in Redis.</li>
<li><a href="https://github.com/niieani/hashids.js">hashids</a> A
small JavaScript library to generate YouTube-like ids from numbers.</li>
<li><a href="https://github.com/jetify-com/typeid-js">typeid-js</a>
Type-safe, K-sortable, and globally unique identifiers inspired by
Stripe IDs</li>
</ul>
<h2 id="frameworks">Frameworks</h2>
<blockquote>
<p>Designed specifically for building RESTful APIs Quickly.</p>
</blockquote>
<ul>
<li><a href="http://loopback.io">Loopback</a>.</li>
<li><a href="http://sailsjs.org">Sails.js</a>.</li>
<li><a href="https://github.com/tiangolo/fastapi">FastAPI</a>.</li>
<li><a href="https://resthapi.com">rest-hapi</a>.</li>
</ul>
<h2 id="gateways">Gateways</h2>
<blockquote>
<p>Manage API infrastructure concerns such as
authentication/authorization, rate limiting, scaling, analytics,
etc.</p>
</blockquote>
<h3 id="open-source-self-hosted">Open Source / Self-hosted</h3>
<ul>
<li><a href="http://apiumbrella.io/">API Umbrella</a>.</li>
<li><a href="http://apiaxle.com">ApiAxle</a>.</li>
<li><a href="http://krakend.io">KrakenD</a>.</li>
<li><a href="https://getkong.org/">Mashape Kong</a>.</li>
<li><a href="https://tyk.io/">Tyk</a>.</li>
<li><a href="http://wso2.com/api-management/try-it/">WSO2 API
Manager</a>.</li>
</ul>
<p><a href="https://github.com/Kikobeats/awesome-api">api.md
Github</a></p>