• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
 

Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki

on

  • 1,130 views

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

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

Statistics

Views

Total Views
1,130
Views on SlideShare
1,052
Embed Views
78

Actions

Likes
3
Downloads
1
Comments
0

4 Embeds 78

http://lanyrd.com 47
https://twitter.com 29
https://www.linkedin.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki Presentation Transcript

    • usableusable RESTREST APIsAPIs { "_links":{ "author": {"href":"http://javier-ramirez.com"}, "work": {"href":"http://teowaki.com"}, "twitter": {"href":"http//twitter.com/supercoco9"} } }
    • Bedale, North of England
    • a random postbox in Bedale
    • a usability problem
    • everybody agrees web usability is a good investment
    • API usability? meh http://docs.aws.amazon.com/AWSECommerceService/2011-08-01/DG/rest-signature.html
    • 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.
    • Learnability Efficiency Memorability Errors Satisfaction Usability 101, the 5 quality components by Jakob Nielsen
    • 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
    • Succeed consistently Fail consistently
    • 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
    • speed or at least asynchronous operations
    • different users different nerds needs
    • netflix REST api resource based
    • netflix REST api experience based http://www.slideshare.net/danieljacobson/api-revolutions-16755403
    • all your format are belong to us *even native formats
    • formats
    • CORS: Cross origin resource sharing
    • Don't expose your implementations details Resources are not models
    • 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
    • REST
    • 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
    • Hypermedia Navigable APIs Associated resources Next steps Pagination Versioning
    • HAL: Hypermedia Application Language extra ball => http://stedolan.github.io/jq/
    • empty new resources > curl “https://api.teowaki.com/teams/5677-dev”
    • 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))
    • 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
    • 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
    • don't let your API be the poo box where your users post their requests Moral of this talk
    • Shameless self promotion If you enjoyed this presentation, please thank me by registering on http://teowaki.com 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