5 Keys to API Design - API Days Paris 2013

50
5 Keys to API Design Daniel Feist Principal Architect, MuleSoft @MuleSoft @dfeist

Transcript of 5 Keys to API Design - API Days Paris 2013

Page 1: 5 Keys to API Design - API Days Paris 2013

5 Keys to API Design Daniel Feist

Principal Architect, MuleSoft

@MuleSoft

@dfeist

Page 2: 5 Keys to API Design - API Days Paris 2013

Me?

Page 3: 5 Keys to API Design - API Days Paris 2013

Me?

Page 4: 5 Keys to API Design - API Days Paris 2013

Me?

Page 5: 5 Keys to API Design - API Days Paris 2013

Me?

Page 6: 5 Keys to API Design - API Days Paris 2013

APIs: The Cat's Meow

Page 7: 5 Keys to API Design - API Days Paris 2013

7 All contents Copyright © 2013, MuleSoft Inc.

The New Enterprise

Page 8: 5 Keys to API Design - API Days Paris 2013

The New Enterprise

SaaS

Packaged apps Custom apps Big Databases / Big Files

Social Cloud platforms

Customers / Partners / Suppliers

Mobility and Devices

Page 9: 5 Keys to API Design - API Days Paris 2013

SaaS

Packaged apps Custom apps Big Databases / Big Files

Social Cloud platforms

Customers / Partners / Suppliers

Mobility and Devices

100,000s

100s 1,000s

1,000,000s

1,000,000,000s

The New Enterprise

Page 10: 5 Keys to API Design - API Days Paris 2013

SaaS

Packaged apps Custom apps Databases

Social Cloud platforms

Customers / Partners / Suppliers Mobility and Devices

The New Enterprise

Internal APIs

B2B APIs

Open web APIs

Product APIs

The New Enterprise

Page 11: 5 Keys to API Design - API Days Paris 2013

API Design

Page 12: 5 Keys to API Design - API Days Paris 2013

#1 The Contract is Critical

Page 13: 5 Keys to API Design - API Days Paris 2013

•  tells consumer devs what they'll get

The API Contract Is Critical

•  tells implementer devs what to deliver

•  ensures they'll meet in the end

•  enables parallel development

Page 14: 5 Keys to API Design - API Days Paris 2013

ü where consumers touch you

ü  your front door, your lobby, your façade

ü  how you want to be seen; your brand

ü  versioned more carefully than code

ü  better interfaces è better code

ü  an organizing principle; alignment forcing function

ü  the ultimate testing surface

The Contract is Critical

Page 15: 5 Keys to API Design - API Days Paris 2013

1. Describe APIs simply and clearly

2. Design APIs easily and soundly

What kind of contract do we want?

Page 16: 5 Keys to API Design - API Days Paris 2013

Document your API?

What kind of contract do we want?

or

Model your API?

Page 17: 5 Keys to API Design - API Days Paris 2013

#2 Design to Delight

Page 18: 5 Keys to API Design - API Days Paris 2013

The Key to API Success?

how?

•  design for them •  iterate quickly •  model cleanly and consistently •  gather feedback

Page 19: 5 Keys to API Design - API Days Paris 2013

#3 Think APX not API

Page 20: 5 Keys to API Design - API Days Paris 2013

Valid

ate

Capture Feedback

UI à UX

API à APX

Design For Your Users

Page 21: 5 Keys to API Design - API Days Paris 2013

Think APX!

Don't expose dirty laundry

users

products

orders invoices

è!

Craft it for your users: what will they love?

This is a long-lived interface, ladies and gentlemen

Page 22: 5 Keys to API Design - API Days Paris 2013

#4 Use Patterns

Page 23: 5 Keys to API Design - API Days Paris 2013

Pattern Lifecycle

Define Share Reuse

Page 24: 5 Keys to API Design - API Days Paris 2013

•  Resource Types •  Collection •  Collection Member •  Document

•  Traits •  Secure •  Paged

Types of Patterns

Page 25: 5 Keys to API Design - API Days Paris 2013

#5 Engage Developers

Page 26: 5 Keys to API Design - API Days Paris 2013

•  Social Tools •  Rate, discuss •  Provide feedback

•  Interactive Console

•  Prototyping Tools

Engage Developers

Page 27: 5 Keys to API Design - API Days Paris 2013
Page 28: 5 Keys to API Design - API Days Paris 2013

What Do People Do Today?

Page 29: 5 Keys to API Design - API Days Paris 2013

WADL

Page 30: 5 Keys to API Design - API Days Paris 2013

Reverb Swagger

Page 31: 5 Keys to API Design - API Days Paris 2013

Mashery IOdocs

Page 32: 5 Keys to API Design - API Days Paris 2013

Google Discovery Docs

Page 33: 5 Keys to API Design - API Days Paris 2013

Apiary Blueprint

Page 34: 5 Keys to API Design - API Days Paris 2013

Verdict:

manifest structure

capture patterns

humanly writeable

let's try harder…

Page 35: 5 Keys to API Design - API Days Paris 2013

Start From Scratch? Really???

Page 36: 5 Keys to API Design - API Days Paris 2013

•  well-known superset of JSON •  optimized for human readability •  great for hierarchies •  cruft-free •  broad tooling base •  extensible-ish

No Need to Start From Scratch!

Page 37: 5 Keys to API Design - API Days Paris 2013

RAML

A new open spec for RESTful APIs that's as clean and as structured as REST itself

RESTful API Modeling Language

the RAML Workgroup: raml.org

Page 38: 5 Keys to API Design - API Days Paris 2013

RAML: How Clean? How Structured?

Page 39: 5 Keys to API Design - API Days Paris 2013

RAML: Clean & Structured.

Page 40: 5 Keys to API Design - API Days Paris 2013

RAML: Reuse

resource type schema

trait

Page 41: 5 Keys to API Design - API Days Paris 2013

Covers Full HTTP

optional version in baseUri

template URIs

query parameters

headers (on request and response)

response per status code

example (and schema) per media type

Page 42: 5 Keys to API Design - API Days Paris 2013

Patterns: Resource Types

externalizable

inheritance

pull in traits

parametrize

Page 43: 5 Keys to API Design - API Days Paris 2013

Patterns: Method-level traits

mix-ins

Page 44: 5 Keys to API Design - API Days Paris 2013

Patterns: body schemas

or just use good ol' form data:

XML schema

JSON schema

examples

Page 45: 5 Keys to API Design - API Days Paris 2013

Patterns: security schemes

username/password; cleartext or use digest

end user allows app to access their data

better to put token in header, not query

the OAuth multi-step dance

Page 46: 5 Keys to API Design - API Days Paris 2013
Page 47: 5 Keys to API Design - API Days Paris 2013

q growing library of API specs in RAML (e.g. on APIhub) q converters (import WADL, Swagger etc.) q client generators q server frameworks (e.g. MuleSoft APIkit; node.js) q JAX-RS Support q  testing frameworks q mocking services (e.g. on APIhub) q <insert your ideas here>

q evolve RAML spec (RAML workgroup)

What's next?

Page 48: 5 Keys to API Design - API Days Paris 2013
Page 49: 5 Keys to API Design - API Days Paris 2013

Interesting?

Page 50: 5 Keys to API Design - API Days Paris 2013

Thank you!