Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)

746 views

Published on

How you can make your REST API more usable.

Lessons learnt while developing https://teowaki.com

Published in: Software
  • Be the first to comment

usable rest apis, by Javier Ramirez from teowaki (Apidays Mediterranea)

  1. 1. USABLE REST APIs { "_links":{ "author": {"href":"http://javier-ramirez.com"}, "work": {"href":"https://teowaki.com"}, "twitter": {"href":"https://twitter.com/supercoco9"} } }
  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 http://docs.aws.amazon.com/AWSECommerceService/2011-08-01/DG/rest-signature.html
  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. 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 202 Accepted 301 Moved Permanently 304 Not Modified 401 Unauthorized 403 Forbidden 404 Not Found 406 Not Acceptable 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 http://www.slideshare.net/danieljacobson/api-revolutions-16755403
  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
  24. 24. API pagination
  25. 25. API links ------ Next steps
  26. 26. Several resources in a single request
  27. 27. Versioning without versions
  28. 28. HAL: Hypermedia Application Language extra ball => http://stedolan.github.io/jq/
  29. 29. empty new resources > curl “https://api.teowaki.com/teams/5677-dev”
  30. 30. 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))
  31. 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. 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. 33. self-documented API
  34. 34. don't let your API be the poo box where your users post their requests Moral of this talk
  35. 35. Find related links at https://teowaki.com/teams/javier-community/link-categories/apis Thanks! Gr ciesà Javier Ramírez @supercoco9 rubyc kiev 14

×