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
1.3k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RESTful APIs
A brief introduction to RESTful APIs concept.
Enderson Tadeu S. Maia
December 17, 2014
More Decks by Enderson Tadeu S. Maia
See All by Enderson Tadeu S. Maia
Minimalist Operating Systems for Containers
endersonmaia
0
150
De Zero a Docker em 30min
endersonmaia
1
870
Other Decks in Programming
See All in Programming
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
1
2k
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
170
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
1
370
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
650
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
390
AIの中の人になってみる
htkym
0
140
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
560
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
670
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
470
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
200
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
570
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
500
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Done Done
chrislema
186
16k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Believing is Seeing
oripsolob
1
200
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
HDC tutorial
michielstock
2
820
Thoughts on Productivity
jonyablonski
76
5.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Faster Mobile Websites
deanohume
310
32k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
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