Mais conteúdo relacionado Semelhante a REST in peace @ IPC 2012 in Mainz (20) Mais de Alessandro Nadalin (20) REST in peace @ IPC 2012 in Mainz2. AGENDA
●Vol. 1: REST in a nutshell
○Tenets
○Antipatterns
●Vol. 2: To the rescue
○HTTP cache
○HATEOAS
12. "REST is about
cool URI design"
http://apple.com/users/1/licenses/4.json
13. "REST is about
cool URI design"
http://apple.com/users/1/licenses/4.json
18. REST follows a URI schema
GET /users
POST /users
PUT /users/{id}
DELETE /users/{id}
...
19. REST follows a URI schema
GET /users
POST /users
PUT /users/{id}
DELETE /users/{id}
...
22. RESTful clients should
be driven by service's
hypermedia controls
Roy Fielding : http://roy.gbiv.com/untangled/2008/rest-apis-must-be-
hypertext-driven
33. GET /users/300
Host: www.example.
com
HTTP/1.1 500 Internal Server
Error
Etag: 1234
X-Powered-By: php/5.3
...
The record cannot be found
34. GET /users/300
Host: www.example.
com
HTTP/1.1 500 Internal Server
Error
Etag: 1234
X-Powered-By: php/5.3
...
The record cannot be found
35. The HTTP protocol is awesome,
and lets you return meaningful and
universally-understood status codes
42. And meanwhile, at Facebook...
12TB of new data every
day
(2 years ago)
500 million users
47. HTTP in a nutshell:
3. widespread cache spec
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
48. HTTP in a nutshell:
Firefox
Company proxy
Great chinese (fire)wall
Reverse proxy
Origin server
4. Layered system
49. HTTP in a nutshell:
5. it is the uniform interface
between clients and servers
67. HTTP/1.1 200 OK
Host: www.example.com
Cache-Control: max-age=60, public
Cacheable by both local and shared caches
69. HTTP's cache fails when dealing with really dynamic
pages, because consumers will always have to hit the
origin server, although a part of the page would be
cacheable ( header and footer, for example )
83. because caching is bound to the protocol, HTTP, not
to your implementation ( Sf, RoR, Django )
91. POST /users
Host: www.example.
com
HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /users/1
92. POST /users
Host: www.example.
com
HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /users/1
93. POST /users
Host: www.example.
com
HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /new-users-db/1
94. POST /users
Host: www.example.
com
HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /new-users-db/1
114. Credits
http://www.flickr.com/photos/larachris/16564077/sizes/o/in/photostream/
http://www.flickr.com/photos/ashatenbroeke/4367373081/sizes/z/in/photostream/
http://www.flickr.com/photos/yourdon/3140270189/sizes/l/in/photostream/
http://www.flickr.com/photos/jox1989/4964706072/sizes/l/in/photostream/
http://www.flickr.com/photos/brainfg/168506259/sizes/o/in/photostream/
http://www.flickr.com/photos/norte_it/3897091546/sizes/o/in/photostream/
http://www.zdnet.com/blog/service-oriented/soap-versus-rest-a-matter-of-style/3568
http://www.flickr.com/photos/turtlemom_nancy/2046347762/sizes/l/in/photostream/
http://www.flickr.com/photos/juanpg/3333385784/sizes/z/in/photostream/
http://www.flickr.com/photos/congvo/301678287/sizes/l/in/photostream/
http://www.flickr.com/photos/ihasb33r/2573196546/sizes/z/in/photostream/
http://www.flickr.com/photos/martin_heigan/4544138976/sizes/o/in/photostream/
http://www.flickr.com/photos/cknara/4195099999/sizes/o/in/photostream/
http://www.flickr.com/photos/1080p/3076529265/sizes/l/in/photostream/
http://www.flickr.com/photos/adamrice/280300202/sizes/l/in/photostream/
http://www.flickr.com/photos/tomer_a/541411897/sizes/o/in/photostream/
http://www.flickr.com/photos/subpra/4514008262/sizes/l/in/photostream/
http://www.flickr.com/photos/lippincott/2539720043/sizes/l/in/photostream/
http://www.flickr.com/photos/rawryder/5086090931/sizes/l/in/photostream/
http://www.flickr.com/photos/robboudon/5312731161/sizes/l/in/photostream/
http://www.flickr.com/photos/bc-burnslibrary/4158243488/sizes/o/in/photostream/
http://www.flickr.com/photos/13606325@N08/2416993706/sizes/o/in/photostream/
http://www.flickr.com/photos/neothezion/5135841069/sizes/l/in/photostream/
http://www.flickr.com/photos/planetschwa/2494067809/
http://www.flickr.com/photos/thomasthomas/258931782/
http://www.flickr.com/photos/rustyboxcars/2629631562/sizes/l/in/photostream/
http://www.flickr.com/photos/ell-r-brown/4138727474/sizes/l/in/photostream/
http://www.flickr.com/photos/noah123/5082076630/sizes/z/in/photostream/
http://www.flickr.com/photos/jungle_boy/220181177/sizes/l/in/photostream/
http://www.flickr.com/photos/prettydaisies/872539081/sizes/l/in/photostream/
http://www.flickr.com/photos/kaptainkobold/76256150/sizes/o/in/photostream/
http://www.flickr.com/photos/uomoincravatta/1438372865/sizes/z/in/photostream/