I've been designing, building and managing APIs for the best part of the last 10 years. In that time I've discovered a bunch of tools and sites that have been really useful.
This post provides a single point of reference for these tools in the different phases of getting an API to market. I'll update the list from time to time as I find more tools that are useful.
Best Practices for designing REST APIs
An excellent article around the reasons why REST APIs are designed the way they are. Brilliant stuff.
RESTful API Design: Teach a Dog to REST
A great presentation on the best practices and principles of restful architecture and design. A must for anyone getting introduced REST APIs.
REST API Tutorial
A step-by-step tutorial on what REST is and why it is good.
A good article about the do not’s of REST API design.
API Design / Mocking Phase
The main tools that I use to help design APIs are:
Postman API Platform
Postman is one of the most popular API platforms on the market to help with almost every phase of the API Design, Management and Governance elements of running an API.
Swagger Editor (Online)
This is an open source tool that allows you to easily copy/paste an API definition (OAS 2/3) and find any issues with it. This is also a really handy converter from YAML to JSON for OAS definitions.
MuleSoft AnyPoint Platform
MuleSoft provides an enterprise platform for building almost any type of integration. This is quite a heavy toolset that is more designed for the enterprise community, however their online tooling to design and mock APIs is a really useful tool that should be explored.
When integrating with other systems, it's sometimes difficult to know exactly what information your application is sending. You can substitute your backend URL with a request bin URL and use it to inspect the exact requests that are being sent. This is also an open source project that you can self host (see: https://github.com/jordanwalsh23/Requestbin)
If you discover more tools that would be useful to add please send me an email email@example.com.