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 Applications: Past, Present and Future
Search
Ahmad Nassri
November 22, 2014
Technology
810
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RESTful Applications: Past, Present and Future
My talk at Fullstack Toronto Conference - November 2014 #FSTOCO -
http://fsto.co/speakers
Ahmad Nassri
November 22, 2014
More Decks by Ahmad Nassri
See All by Ahmad Nassri
Modern Patterns in Modular Software Design
ahmadnassri
0
230
The Roaring 2020s
ahmadnassri
0
470
Modern Patterns in Modular Software Architectures
ahmadnassri
0
2k
Scaling Documentation and Team Practices
ahmadnassri
1
1k
Scaling Documentation and Team Practices
ahmadnassri
1
130
Milliseconds to Millions - Benchmarking & Optimization for Fun and Profit!! @ FullStack 2017
ahmadnassri
1
710
How to build a successful API
ahmadnassri
0
310
Modern Open Source Node.js Packages
ahmadnassri
1
720
Rise of Open Source
ahmadnassri
1
77
Other Decks in Technology
See All in Technology
AI驚き屋発見器
yama3133
1
390
エンタープライズデータへ安全につなぐ Production-ready なエージェント設計 ― AI × MCP リファレンスアーキテクチャ ― #AIDevDay
cdataj
1
410
PLaMo 3.0 Primeの構造化出力サポート
pfn
PRO
0
150
AI工学特論: MLOps・継続的評価
asei
11
3.1k
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
180
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
190
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
6
3.8k
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
1
290
データ活用研修 データマネジメント【MIXI 26新卒技術研修】
mixi_engineers
PRO
4
840
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
1
260
QAと開発の両側から進める AI活用 -QAプロセスAI支援ツールキットと Inner Loop / Outer Loopの取り組み-
legalontechnologies
PRO
2
390
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
2
240
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Building Applications with DynamoDB
mza
96
7.1k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
How to Ace a Technical Interview
jacobian
281
24k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Designing for Performance
lara
611
70k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
440
Transcript
None
None
GET /who HTTP/1.1 Host: www.ahmadnassri.com Accept: application/json HTTP/1.1 200 OK
Date: Sat, 22 Nov 2014 15:15:00 GMT Content-Type: application/json { "name": "Ahmad Nassri", "website": "http://www.ahmadnassri.com/", "twitter": "http://twitter.com/ahmadnassri", "email": "
[email protected]
", "bio": "Technologist, Entrepreneur, Dog Lover", "work": { "company": " ", "title": "API Master" } } Mashape.com
Consume, Monitor, Manage, Monetize and Distribute Private and Public APIs.
None
None
None
None
REST ( presentational State Transfer) is a simple stateless architecture
style that generally runs over .
: Started as notes written by Tim Berners Lee. First
standard HTTP/1.0 version (RFC 1945). HTTP/1.1 (RFC 2616) & REST presential tate ransfer by Roy Fielding Refactoring with HTTP/1.1 bis SPDY by Google IETF working group released draft of HTTP/2 RFC2616 is Dead! HTTP/2 Last Call!
RFC7230 - HTTP/1.1: Message Syntax and Routing RFC7231 - HTTP/1.1:
Semantics and Content RFC7232 - HTTP/1.1: Conditional Requests RFC7233 - HTTP/1.1: Range Requests RFC7234 - HTTP/1.1: Caching RFC7235 - HTTP/1.1: Authentication
None
None
None
Collection+JSON Hypertext Application Language ( ) ATOM
GET /player/1234567890 HTTP/1.1 { "@context": { "@vocab": "https://schema.org/", "image": {
"@type": "@id" }, "friends": { "@type": "@id" } }, "@id": "https://api.example.com/player/1234567890", "playerId": "1234567890", "name": "Kevin Sookocheff", "alternateName": "soofaloofa", "image": "https://api.example.com/player/1234567890/avatar.png", "friends": "https://api.example.com/player/1234567890/friends" }
GET /player/1234567890/friends HTTP/1.1 { "@context": [ "http://www.w3.org/ns/hydra/core", { "@vocab": "https://schema.org/",
"image": { "@type": "@id" }, "friends": { "@type": "@id" } } ], "@id": "https://api.example.com/player/1234567890/friends", "operation": { "@type": "BefriendAction", "method": "POST", "expects": { "@id": "http://schema.org/Person", "supportedProperty": [ { "property": "name", "range": "Text" }, { "property": "alternateName", "range": "Text" }, { "property": "image", "range": "URL" } ] } }, "member": [ { "@id": "https://api.example.com/player/1895638109", "name": "Sheldon Dong", "alternateName": "sdong", "image": "https://api.example.com/player/1895638109/avatar.png", "friends": "https://api.example.com/player/1895638109/friends" }, { "@id": "https://api.example.com/player/8371023509", ... } ], "nextPage": "https://api.example.com/player/1234567890/friends?page=2" }
RFC 2617
# URL Versioning: GET /api/v2/foo HTTP/1.1 # Custom Header: GET
/api/foo X-VERSION: 2 # Content Type GET: /api/foo Accept: application/vnd.github.v3.raw+json
None
None
None
None
None
None
Stalk me on Twitter , Read more on my ,
Follow my APIs on . @AhmadNassri Blog Mashape.com/AhmadNassri http://www.ahmadnassri.com http://www.mashape.com