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
R.I.P.: REST in peace! A guide through RESTful ...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Robson de Almeida
December 05, 2014
Technology
140
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
R.I.P.: REST in peace! A guide through RESTful services.
I did this presentation in the #9 Superplayer Hack Sessions.
Robson de Almeida
December 05, 2014
More Decks by Robson de Almeida
See All by Robson de Almeida
The Road to Node(JS)
robsondealmeida
0
95
The MongoDB Quest - a tale of shards replicas and a lot of data
robsondealmeida
0
110
The Queue is dead! Long live the Event!
robsondealmeida
1
230
Startup for Developers: each line matters.
robsondealmeida
0
100
The Lean Startup na Prática
robsondealmeida
0
220
Other Decks in Technology
See All in Technology
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
2
700
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
12
8.4k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
6.9k
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
770
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
250
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
140
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
Goでデータパイプラインを作ろう
sansantech
PRO
1
360
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
210
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
190
モバイルアプリ開発概論2026
recruitengineers
PRO
5
520
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
320
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
BBQ
matthewcrist
89
10k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Exploring anti-patterns in Rails
aemeredith
3
460
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
New Earth Scene 8
popppiees
3
2.5k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
540
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
450
A Soul's Torment
seathinner
6
3.4k
Transcript
R.I.P.: REST IN PEACE! a guide through RESTful services
WHY REST ?
WHY REST ? well known concepts optimised technologies and infrastructure
lightweight approach better scale
WHAT REST DO NOT MEANS
WHAT REST DO NOT MEANS REST is NOT a framework
REST is NOT a protocol REST is NOT SOA REST is NOT Client-Server Architecture REST is NOT a URI REST is NOT API
WHAT REST MEANS ?
REST IS ABOUT STYLE
the REST creator
Roy Fielding== Roy Rosello
ROY's WORK … Architectural Styles and the Design of Network-based
Software Architectures REpresentational State Transfer is a architectural style for distributed hypermedia systems HTTP spec & Apache HTTP server
REST CONSTRAINTS
REST CONSTRAINTS CLIENT-SERVER STATELESS RESOURCES
STATELESS each request contains all of the information and cannot
take advantage of any stored context on the server session state is kept entirely on the client
RESOURCES the key abstraction of information in REST is a
resource a resource IS NOT an API or ENDPOINT or METHOD
RESOURCE IDENTIFIER Uniform Resource Identifier (URI) the key to access
the resource { protocol } : { base uri } / { resource path }
URI IS NOT an URL or URN but it covers
it uniform resource locator uniform resource name
REST APIs BEST AND WORSE PRACTICES
NOUNS, NO VERBS
NOUNS, NO VERBS Leave verbs for the HTTP verbs /playlists
/playlists/10 /getAllPlaylists /getPlaylist?id=10 /get?type=playlist&id=10 good bad
HTTP VERBS TO MEAN SOMETHING
GET /playlists GET /playlists/10 POST /playlists PUT /playlists/10 DELETE /playlists/10
HTTP VERBS TO MEAN SOMETHING
HTTP GET SHOULD NOT ALTER THE STATE
use POST, PUT and DELETE. also do not use GET
when you HAVE no choice GET /subscriptions/171/cancel // bad PUT /subscriptions/171/cancel // bad but better ... HTTP GET SHOULD NOT ALTER THE STATE
HTTP STATUS CODE
for successful requests, use 2xx status code. when the client
is wrong, use 4xx status code. for unknown errors, use 5xx status code HTTP STATUS CODE
HTTP HEADERS FOR SERIALIZATION FORMATS
Accept: application/json prefer JSON. HTTP HEADERS FOR SERIALIZATION FORMATS
VERSIONING
prefer /v1, /v2 Instead of /1.0 /v1.0 /20141201 the version
is part of the base URI VERSIONING
ERROR HANDLING
use a standard structure for error messages always identify the
error with a key/code. ERROR HANDLING
THE ZOMBIES FAMILY
THANKS speakerdeck.com/robsondealmeida /robsondealmeida /robsondealmeida