Reusable APIs
Mike Amundsen
@mamund
@Layer7 @CAInc
We need more reusable APIs
Too many "snowflake" APIs
Too few generic descriptions of APIs
Too often we code from "zero" every time
We can do better
Top 10 things we should
STOP
doing
Stop mapping semantics to protocols
Map semantics to messages instead.
Stop hiding update & query rules in
human-readable documentation
Use inline hypermedia controls instead.
Stop requiring devs to be protocol gurus
Provide "accommodations" like SDKs
when appropriate
Stop making everyone use the
same object model
Share message models,
not object models
Stop describing services as
single instances
Describe services as abstract classes.
Stop baking workflow into client code
Put workflow in the message
via hypermedia
Stop breaking others people's code
Take the "no breaking changes" pledge
Take the "no breaking changes" pledge
Stop making client devs re-code & redeploy at random
Use "dark release" to allow client devs
to update on their own schedule
Stop adding single points of failure
Distribute not just storage,
but also execution.
Stop pretending the Web defies the laws
of probability and physics
We can do better
10. Map semantics to messages

5. Put workflow in messages

9. Use inline hypermedia

4. Take the "no breaking
changes" pledge

8. Provide SDKs when
appropriate
7. Share messages, not objects
6. Describe services as
abstract classes

3. Use "dark release"
2. Distribute storage and
execution
1. Obey the laws of
probability and physics
None of this is complicated
Some of it is hard.
Let's talk about

Reusable APIs
Mike Amundsen
@mamund
@Layer7 @CAInc
g.mamund.com/top10stop

Reusable APIs