Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
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
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
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

More Related Content

Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki