the way you want it Expressive - provides clear options to do what you want Simple - makes common uses easy, advanced uses possible Predictable - relies on well-known patterns Adapted from API Design Patterns, JJ Geewax
the way you want it Expressive - provides clear options to do what you want Simple - makes common uses easy, advanced uses possible Predictable - relies on well-known patterns Resilient
Change Flexible Private Internal site Easy Flexible Public Public site Moderate Stable Private Internal API Difficult Stable Public Public API VERY HARD But sometimes, change is hard
care Enables growth Never change High stability Limited innovation Rarely possible Stifles growth Change recklessly High flexibility & risk Rapid innovation Alienates your users Undermines growth
response should contain • code - machine readable, does not change • details - structured, machine readable information • message - human readable, can change
thing and different names to represent different things. Make a decision - pick something and stick with it Imperative mood - “get errors” Indicative mood - “is valid” Adapted from API Design Patterns, JJ Geewax
perspectives Low-cost collaboration Same person Tightly coupled One perspective No collaboration Separate teams Loosely coupled Multiple perspectives Higher-cost collaboration