This is my personal list of resources about principles and guidelines for designing RESTful Web APIs.
- API 101 by Kin Lane – a network of sites dedicated to Web APIs and related topics: API Discovery, API Integration, Backend as a Service (BaaS) and much more.
- What Makes a Great API? The Five Keys [19 July 2012] – Valuable slides by ProgrammableWeb’s John Musser presented during a talk at OSCon about the topic of a great API.
- Designing a RESTful Web API [26 February 2012] – Luis Rei‘s article to serve as his personal “quick start guide” for designing RESTful Web APIs. As such, the document is concerned with the how rather than the why. For the latter, check the Bibliography.
- How RESTful is Your API? [26 August 2012] – Thoughts by Cory House about RESTful APIs (pragmatic) implementation following what Roy Fielding outlined in his seminal dissertation on Representation State Transfer (REST).
- Best Practices for Designing a Pragmatic RESTful API [29 May 2013] – when you’re in a position to create a public API for your web app, you’re left with a bunch of choices: What formats should you accept? How should you authenticate? Should your API be versioned? In designing an API for SupportFu, Vinay Sahni have tried to come up with pragmatic answers to these questions. His post contains links and thoughts about this topic.
- The Web API Checklist — 43 Things To Think About When Designing, Testing, and Releasing your API [15 April 2013] – when you’re designing, testing, or releasing a new Web API, you’re building a new system on top of an existing complex and sophisticated system. This is a list of a bunch of things, both obvious and subtle, that can easily be missed when designing, testing, implementing, and releasing a Web API.
- REST, where’s my state? [24 August 2012] – One of the well-known constraints of this REpresentational State Transfer style is that communication must be stateless. This post explains how statelessness works on today’s Web, explaining the difference between application state and resource state.
- Stop Designing Fragile Web APIs [22 April 2013] – When you release your Web API, it’s carved into stone. It’s a scary commitment to never make an incompatible change. If you fail, you’ll have irate customers yelling in your inbox, followed by your boss, and then your boss’s boss. You have to support this API. Forever. Unless you version it, right?
- Building Stripe’s API [28 February 2013] – a post by Amber Feng about designing and building Stripe‘s API, particularly lessons learned and what kind of things they did to try to make the API as easy to use as possible.
- A Software Developer’s Guide to HTTP [12 January 2012] – this is a series of articles where Scott Allen look at HTTP protocol from a software developer’s perspective.
Just as the switch from the command line to the GUI required new UI skills and sensibilities, mobile and sensor-based programming creates new opportunities to innovate, to surprise and delight the user, or, in failing to use the new capabilities, the opportunity to create frustration and anger. The bar has been raised. Developers who fail to embrace context-aware programming will eventually be left behind.
source: Context Aware Programming
Lukas Mathis, in his blog post quoted an interesting excerpt from his book Designed for Use: Create Usable Interfaces for Applications and the Web.
[..] even though most people are perfectly capable of picking from many choices, they may not like it.
A great user interface is not one where each goal can be reached with the smallest number of clicks possible, or where the user has to pick from only a small number of choices at each step, but one where each individual click is as obvious as possible. If your users have a clear goal in mind, each level of the hierarchy should have one option that clearly satisfies their goal—or at least gets them closer to that goal. As long as users feel that they are getting closer to their goal with each step, they don’t mind drilling down into a deep hierarchy.
I’m reading this book and I find it very inspirational.
The Ten Laws
- REDUCE – The simplest way to achieve simplicity is through thoughtful reduction.
- ORGANIZE – Organization makes a system of many appear fewer.
- TIME – Savings in time feel like simplicity.
- LEARN – Knowledge makes everything simpler.
- DIFFERENCES – Simplicity and complexity need each other.
- CONTEXT – What lies in the periphery of simplicity is definitely not peripheral.
- EMOTION – More emotions are better than less.
- TRUST – In simplicity we trust.
- FAILURE – Some things can never be made simple.
- THE ONE – Simplicity is about subtracting the obvious, and adding the meaningful.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Antoine de Saint-Exupery
The laws of simplicity / John Maeda
Planning my future goals is always hard for me. I need to avoid the over-commitment. Anyway this is my todo-list for this year.
- Learning and improvement
- Android (development and deployment)
- PhoneGap (development and deployment with PhoneGap Build)
- REST Services (design and implementation)
- Continuous Integration/Deployment (practicing)
- Responsive Design (improvement)
- Cloud Deployment (mainly on Platform as a Service)
- Git (howto)
- Ant and Maven (build and configuration management)
- Product Management (howto and practicing)
- Community involment
- Coworking (participating)
- Open source (involving in a project)
- Cohousing (practicing)
- Personal life
- Drumming (practicing djembe and balafon mainly)
- Getting back with outdoor activities (running and skating)
The work is in progress …