restful apis with herman radtke
TRANSCRIPT
![Page 1: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/1.jpg)
HTTP MethodsHow They Relate to RESTful API's
![Page 2: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/2.jpg)
About Me
Herman J. Radtke III
Web Architect at HauteLookDesign the RESTful API
Writing PHP for 9 years
Maintain pecl/gearman and pecl/memcache
![Page 3: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/3.jpg)
Perspective
HauteLook's API is for internal useVery few restrictions on designExample: Netflix
Many companies have an external APIConcerned with how the design affects other clients (ex: flash)Examples: Twilio, Jira, Facebook
![Page 4: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/4.jpg)
Why?
REST is an architectural style
Not satisfied with the existing explanations
![Page 5: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/5.jpg)
GET vs POST
Do we actually know the differences?
![Page 6: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/6.jpg)
GET vs POST
I ask every interviewee this question.
Common answers:GET does not send a body in the request
POST can send more data
POST is more secure
![Page 7: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/7.jpg)
Idempotence
Idempotence means no side-effects.
This is the most important difference!GET is idempotent (safe)POST is not idempotent (unsafe)
It allows the web to scale.
![Page 8: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/8.jpg)
Improper use of GET
<a href=”/logout.php”>Logout</a>
We just broke the internetCaching proxiesBrowser "accelerator" plugins
Better to use a form with the POST method
Other example: Tracking Pixels
![Page 9: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/9.jpg)
POST vs PUT
POST is create and PUT is update, right?
Not so simpleMethods do not map to CRUDCRUD can map to the methods
Key difference?PUT is idempotent!
![Page 10: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/10.jpg)
Create Using POST
![Page 11: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/11.jpg)
Create Using PUT
![Page 12: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/12.jpg)
Update Using POST 1/2
![Page 13: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/13.jpg)
Update Using POST 2/2
![Page 14: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/14.jpg)
Update Using PUT
![Page 15: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/15.jpg)
Other HTTP Methods
PATCH
DELETE
HEAD
OPTIONS
![Page 16: RESTful APIs with Herman Radtke](https://reader035.vdocuments.us/reader035/viewer/2022071813/55a2b8e31a28ab87548b4580/html5/thumbnails/16.jpg)
Additional Resources
RFC 2616 Method Definitions - http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
#rest on freenode
My twitter - @hermanradtke