building usable rest apis. by javier ramirez, teowaki. fowa london

60
USABLE REST APIs { "_links":{ "author": {"href":"http://javier-ramirez.com"}, "work": {"href":"https://teowaki.com"}, "twitter": {"href":"https://twitter.com/supercoco9"} } }

Upload: javier-ramirez

Post on 20-Jan-2017

643 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

USABLE REST APIs

{ "_links":{ "author": {"href":"http://javier-ramirez.com"}, "work": {"href":"https://teowaki.com"}, "twitter": {"href":"https://twitter.com/supercoco9"}

} }

Page 2: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Bedale, North Yorkshire

Page 3: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

a randompostbox in Bedale

Page 4: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

a usabilityproblem

Page 5: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

everybody agrees web usability is a good investment

Page 6: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

API usability? meh

http://docs.aws.amazon.com/AWSECommerceService/latest/DG/rest-signature.html

Page 7: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 8: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 9: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 10: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 11: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 12: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 13: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Web usability is an approach to make web sites

easy to use for an end-user, without the requirement that any specialized training be

undertaken.

Page 14: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

LearnabilityEfficiencyMemorabilityErrorsSatisfaction

Usability 101, the 5 quality components by Jakob Nielsen

Page 15: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 16: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

EFFECTIVE IMMEDIATELY!! NO MORE TYPEWRITERS ARE TO BE PURCHASED, LEASED, etc., etc. Apple is an innovative company. We must believe and lead in all areas. If word processing is so neat, then let's all use it!

Mike Scott, Apple President, 1980

Page 17: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 18: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

don't be too smart

follow best practices

Page 19: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Succeed consistently

Fail consistently

Page 20: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

twitter200 OK Success!304 Not Modified400 Bad Request401 Unauthorized403 Forbidden404 Not Found406 Not Acceptable410 Gone420 Enhance Your Calm500 Internal Server Error502 Bad Gateway503 Service Unavailable

Useful Status429 Too many requests204 No Content

teowaki200 OK Success!201 Created202 Accepted301 Moved Permanently304 Not Modified401 Unauthorized403 Forbidden404 Not Found406 Not Acceptable422 Unprocessable Entity406 Not Acceptable500 Internal Server Error

Page 21: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

speed or at least asynchronous operations

Page 22: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

different users

different nerds needs

Page 23: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Javi, you are not an example

of anything

Page 24: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

formats

Page 25: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

CORS: Cross origin resource sharing

Page 26: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Where to put your metadata In your HTTP Headers?

As request params and response fields?

Maybe Both? It usually pays not to be too strict and just make your users' lives easier

Page 27: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 28: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 29: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Same content?

Page 30: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Partial Responses

teowaki's approach

api.teowaki.com/people/tw?api_quiet=true&api_links=false

Google's approach

www.googleapis.com/youtube/v3/videos?part=snippet&fields=items(id,snippet(title,position))

Page 31: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

netflix REST apiresource based

Page 32: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

netflix REST apiexperience based

http://www.slideshare.net/danieljacobson/api-revolutions-16755403

Page 33: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Don't expose your implementations details Resources are not database tables

Page 34: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Easier to understand

Change the internals without breaking the contract

Resources based on business objects are more resistant to versioning

More opacity means more security

Page 35: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

I shouldn't be ableto guess your programming languageby looking at your API

Page 36: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Hypermedia

Navigable APIs

Page 37: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

API pagination

Page 38: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

HAL:HypermediaApplicationLanguage

Page 39: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

JSON-API

Page 40: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

API links------Next steps

Page 41: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Several resources in a single request

Page 42: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Versioning without versions

Page 43: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

empty new resources> curl “https://api.teowaki.com/teams/5677-dev”

Page 44: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

URI templates

http://example.com/~{username}/ http://example.com/dictionary/{term:1}/{term} http://example.com/search{?q,lang}

Page 45: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

self-documentedAPI

Page 46: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London
Page 47: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Swagger

Page 48: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Swagger

Page 49: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

RAML

Page 50: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

RAML

Page 51: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Don't just implement.

Think

Page 52: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Should my API allow asynchronous creation,

update, and deletion?

Page 53: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Should it return the contents of a newly created

or updated resource or just the id?

What about deleted resources?

Page 54: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Should my API ignore unrecognised parameters

silently, even when it is gettinga valid request, or should it

return an error?

Page 55: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Should it allow bulk operations?

PATCH /users/541,1001,3005

Page 56: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Does my API need a real-time or push mechanism

for updates?

Do I need to set usage quotas?

Page 57: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

There are not good or bad answers. Each API has different needs.

The only wrong answer is copying and pasting fromyour last project and pretend the work is done.

Page 58: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

LearnabilityEfficiencyMemorabilityErrorsSatisfaction

Remember:

Page 59: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

don't let your APIbe the poobox whereyour userspost theirrequests

Moral of this talk

Page 60: Building Usable REST APIs. By Javier Ramirez, teowaki. FOWA London

Find related links at

https://teowaki.com/teams/javier-community/link-categories/apis

Thanks!

Javier Ramírez@supercoco9