Your SlideShare is downloading. ×
Usable REST APIs. BCNdevcon edition.
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Usable REST APIs. BCNdevcon edition.


Published on

With the adoption of REST, the proliferation of smartphones and tablets, and the second coming of JavaScript, exposing our applications as a service is now more important than ever. …

With the adoption of REST, the proliferation of smartphones and tablets, and the second coming of JavaScript, exposing our applications as a service is now more important than ever.

Lots of libraries and frameworks make really easy to create a (kinda) RESTful API but, in many occassions, these APIs are designed without really thinking on the developers that will have to use them.

I want to talk about some of the points that can help making your API more developer-friendly. Some of the areas I’ll cover will be discoverability, authentication, headers, formats, parameters, documentation and tools.

Published in: Technology, Design

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. USABLE REST APIs { "_links":{ "author": {"href":""}, "work": {"href":""}, "twitter": {"href":""} }}
  • 2. Bedale, North of England
  • 3. a random postbox in Bedale
  • 4. a usability problem
  • 5. everybody agrees web usability is a good investment
  • 6. API usability? meh
  • 7. 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.
  • 8. Learnability Efficiency Memorability Errors Satisfaction Usability 101, the 5 quality components by Jakob Nielsen
  • 9. 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
  • 10. Succeed consistently Fail consistently
  • 11. twitter 200 OK Success! 304 Not Modified 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 406 Not Acceptable 420 Enhance Your Calm 500 Internal Server Error 502 Bad Gateway 503 Service Unavailable Useful Status 429 Too many requests 204 No Content huddle 200 OK 201 Created 202 Accepted 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 410 Gone teowaki 200 OK Success! 201 Created 304 Not Modified 401 Unauthorized 403 Forbidden 404 Not Found 422 Unprocessable Entity 406 Not Acceptable 500 Internal Server Error
  • 12. speed or at least asynchronous operations
  • 13. different users different nerds needs
  • 14. netflix REST api resource based
  • 15. netflix REST api experience based
  • 16. all your format are belong to us *even native formats
  • 17. formats
  • 18. CORS: Cross origin resource sharing
  • 19. Don't expose your implementations details Resources are not models
  • 20. 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
  • 21. REST
  • 22. REST Highlights you should know about but not necessarily implement client-server,stateless,layered,cacheable Resources Resource Identifiers Resource metadata Uniform interface operations Representations Representation metadata HATEOAS (Hypermedia) Optionally: code on demand
  • 23. Hypermedia Navigable APIs
  • 24. API pagination
  • 25. API links -----Next steps
  • 26. Several resources in a single request
  • 27. Versioning without versions
  • 28. HAL: Hypermedia Application Language extra ball =>
  • 29. empty new resources > curl “”
  • 30. Partial Responses teowaki's approach Google's approach part=snippet&fields=items(id,snippet(title,position))
  • 31. Where to put your metadata In your HTTP Headers? As request params and response fields? Both? Don't worry too much. Just choose one and stick to it
  • 32. Don't just implement. Think Should the API allow asynchronous creation, update and deletion? => return-async Should it return the created/deleted/updated object or just a status code? =>return-representation Should it ignore extra params transparently or should it warn you? => api_strict_mode Should it allow for bulk updates/deletions on collections? => PATCH /user/links Think of your own questions. There are not good or bad answers
  • 33. don't let your API be the poo box where your users post their requests Moral of this talk
  • 34. Shameless self promotion If you enjoyed this presentation, please thank me by registering on It's a site for developers, you can hang around for free, and I think it's quite cool (but a bit buggy since we've just launched) <3 <3 <3 Javier Ramírez @supercoco9