Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RESTful APIs
Search
Enderson Tadeu S. Maia
December 17, 2014
Programming
5
1.3k
RESTful APIs
A brief introduction to RESTful APIs concept.
Enderson Tadeu S. Maia
December 17, 2014
Tweet
Share
More Decks by Enderson Tadeu S. Maia
See All by Enderson Tadeu S. Maia
Minimalist Operating Systems for Containers
endersonmaia
0
110
De Zero a Docker em 30min
endersonmaia
1
840
Other Decks in Programming
See All in Programming
return文におけるstd::moveについて
onihusube
1
1.4k
PHPカンファレンス 2024|共創を加速するための若手の技術挑戦
weddingpark
0
140
Azure AI Foundryのご紹介
qt_luigi
1
210
盆栽転じて家具となる / Bonsai and Furnitures
aereal
0
1.9k
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
300
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
1.4k
情報漏洩させないための設計
kubotak
5
1.3k
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
1.9k
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
100
快速入門可觀測性
blueswen
0
500
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
550
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
116
7.1k
BBQ
matthewcrist
85
9.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Side Projects
sachag
452
42k
Git: the NoSQL Database
bkeepers
PRO
427
64k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Done Done
chrislema
182
16k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
GraphQLとの向き合い方2022年版
quramy
44
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Documentation Writing (for coders)
carmenintech
67
4.5k
Transcript
RESTful APIs Maceió Dev Meetup December 17, 2014
about.me/endersonmaia
What I’m going to talk
30 minutes to • REST • Constraints • Richard Maturity
Model (RMM) • HTTP Methods • HTTP Satus Codes • Resource Naming • Format • Linking • …
REST Representational State Transfer (Roy Fielding, 2000)
Constraints
Client–server
Stateless
Cacheable
Layered system
Uniform interface
Uniform interface • Resource-Based • Manipulation of Resources Through Representations
• Self-descriptive Messages • Hypermedia as the Engine of Application State (HATEOAS)
RMM Richardson Maturity Model
Level 0 The swamp of POX
Level 0 The swamp of POX $ curl -X POST
-d \ "<?xml version=“1.0"?> \ <methodCall> \ <methodName>examples.getStateName</methodName> \ <params> \ <param> \ <value><i4>40</i4></value> \ </param> \ </params> \ </methodCall>" http://api.example.com
Level 1 Resources
Level 1 Resources • GET - http://host/person?action=add? name=John&age=25 • GET
- http://host/city/delete
Level 2 HTTP Verbs
Level 2 HTTP Verbs • GET - http://host/users • PUT
- http://host/users • DELETE - http://host/users
Level 3 Hypermedia Controls
HTTP Methods
GET
POST
DELETE
PUT
PATCH
OPTIONS
– Leonard Richardson, 2007 "OPTIONS is a promising idea that
nobody uses."
HEAD
HTTP Status Codes
None
2XX
2XX • 200 - OK • 201 - Created •
202 - Accepted • 204 - No Content
3XX
3XX • 301 - Moved Permanently • 304 - Not
Modified
4XX
4XX • 400 - Bad Request • 401 - Unauthorized
• 403 - Forbidden • 404 - Not Found • 409 - Conflict
5XX
5XX • 500 - Internal Server Error • 501 -
Not Implemented
HTTP Headers
HTTP Method x Status
None
None
None
None
More …
Verbs
Verbs • POST - to create (INSERT) a new resource
• GET - to recover (SELECT) a specific resource • PUT/PATCH - to UPDATE a specific resource • DELETE - to DELETE a specific resource
Resource Naming
Resource Naming • POST http://example.com/customers • GET http://example.com/customers/33245 • GET|PUT|DELETE
http://example.com/products/66432 • GET http://example.com/customers/33245/orders • POST http://example.com/customers/33245/orders/ 8769/lineitems • GET http://example.com/customers/33245/orders/ 8769/lineitems/1
Resource Naming Anti-Pattern • GET http://api.example.com/services? op=update_customer&id=12345&format=json • GET http://api.example.com/
update_customer/12345 • GET http://api.example.com/customers/ 12345/update • PUT http://api.example.com/customers/ 12345/update
Response
Format
Format • XML (Atom, …) • JSON (JSON-LD, HAL, …)
None
Linking
None
HATEOAS
Hypermedia As The Engine Of Application State
HATEOAS
HATEOAS
Idempotence & Safe Methods
What’s missing ?
What’s missing ? • More about HTTP Header • HTTP
Authentication samples • Using Tokens • Versioning strategies • ?
References • http://stateless.co/hal_specification.html • http://jsonapi.org • http://www.infoq.com/articles/Web-APIs-From-Start-to-Finish • http://restfulwebapis.com •
http://www.restapitutorial.com • http://martinfowler.com/articles/richardsonMaturityModel.html • http://restcookbook.com • http://www.w3.org/TR/json-ld/ • http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm • http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven • http://brockallen.com/2012/05/14/http-status-codes-for-rest/
Thank you! @endersonmaia