Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
130
De Zero a Docker em 30min
endersonmaia
1
850
Other Decks in Programming
See All in Programming
愛される翻訳の秘訣
kishikawakatsumi
1
270
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
4
1.5k
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
100
AIコーディングエージェント(skywork)
kondai24
0
130
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
190
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
110
[SF Ruby Conf 2025] Rails X
palkan
0
470
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
210
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
320
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
120
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
290
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
2.9k
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
88
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Bash Introduction
62gerente
615
210k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Speed Design
sergeychernyshev
33
1.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
700
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