Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki


Published on

How you can make your REST APIs more usables with a brief introduction to hypermedia. Talk delivered at Jrubyconf EU 2013

Published in: Technology, Design
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki

  1. 1. usableusable RESTREST APIsAPIs { "_links":{ "author": {"href":""}, "work": {"href":""}, "twitter": {"href":"http//"} } }
  2. 2. Bedale, North of England
  3. 3. a random postbox in Bedale
  4. 4. a usability problem
  5. 5. everybody agrees web usability is a good investment
  6. 6. API usability? meh
  7. 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. 8. Learnability Efficiency Memorability Errors Satisfaction Usability 101, the 5 quality components by Jakob Nielsen
  9. 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. 10. Succeed consistently Fail consistently
  11. 11. huddle 200 OK 201 Created 202 Accepted 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 410 Gone 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 teowaki 200 OK Success! 201 Created 304 Not Modified 401 Unauthorized 404 Not Found 422 Unprocessable Entity 406 Not Acceptable 500 Internal Server Error
  12. 12. speed or at least asynchronous operations
  13. 13. different users different nerds needs
  14. 14. netflix REST api resource based
  15. 15. netflix REST api experience based
  16. 16. all your format are belong to us *even native formats
  17. 17. formats
  18. 18. CORS: Cross origin resource sharing
  19. 19. Don't expose your implementations details Resources are not models
  20. 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. 21. REST
  22. 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. 23. Hypermedia Navigable APIs Associated resources Next steps Pagination Versioning
  24. 24. HAL: Hypermedia Application Language extra ball =>
  25. 25. empty new resources > curl “”
  26. 26. Partial Responses teowaki's approach Google's approach part=snippet&fields=items(id,snippet(title,position))
  27. 27. 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
  28. 28. 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
  29. 29. don't let your API be the poo box where your users post their requests Moral of this talk
  30. 30. 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 <3 <3 <3 Javier Ramírez @supercoco9