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 API @ Front-End Developers Taiwan 2014-...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Poga Po
April 24, 2014
Programming
200
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RESTful API @ Front-End Developers Taiwan 2014-04-23
Poga Po
April 24, 2014
More Decks by Poga Po
See All by Poga Po
Spacer - iThome Serverless All-Star
poga
2
310
civic-notebook
poga
0
110
Fuzz Testing and go-fuzz
poga
0
400
everything is log
poga
12
1.9k
g0v intro
poga
0
120
新聞產生器
poga
0
690
Dependency Management in Go
poga
4
670
Redis: based on real story
poga
16
1.4k
Other Decks in Programming
See All in Programming
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
640
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
150
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.6k
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
530
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
520
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
220
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
900
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
340
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
280
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
540
act2-costs.pdf
sumedhbala
0
120
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.9k
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
180
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Google's AI Overviews - The New Search
badams
0
1.1k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
440
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Speed Design
sergeychernyshev
33
1.9k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
410
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
550
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Transcript
REST Open Data, URI, and REST API @devpoga Front-End Developers
Taiwan 2014.04.23
@devpoga
REpresentational State Transfer • Resource and Representation • Manipulation through
Representation • Self-Descriptive • Links between Resources
先別管 REST API 了 ! 你有聽過 鄉⺠民 OCR 嗎
陽光法案 • 陽光法案 • 公職⼈人員財產申報法 • 政治獻⾦金法 • 遊說法 •
… • 2005 年
政治獻金數位化 • 《政治獻⾦金會計報告書查閱收費標準》 • 可以前往監察院查閱會計報告 • …需要事前預約 • …查詢⼀一個專⼾戶 20
元 • …不能以電⼦子檔格式攜出 • …影印⼀一張 2 元
反核四五六運動++
ronnywang++
鄉民 OCR
cells.1100.json
Let’s make a REST API
1. Thinking in Resources 2. HTTP Verb 3. Links between
Resources
Resource • 提供的資料名稱 • 政治獻⾦金表
gov.tw/campaign-finances/ /政府/政治獻⾦金/ { 8: {“張慶忠”: […]}, {“林鴻池”:[…]},…], 7: […], …}
Resource
gov.tw/campaign-finances/張慶忠/ /政府/政治獻⾦金/張慶忠/ [ { ⽇日期 :”100/12/03”, 捐贈者:”匿名”, 種類 :”個⼈人捐贈收⼊入”, ⾦金額
:12345 }, { … }, …] Resource Entry
gov.tw/legislators/ /政府/⽴立法委員/ { 8: { KMT: [“張慶忠”, “林鴻池”,…] }, {
DPP: […] }, … } Resource
gov.tw/legislators/張慶忠/ /政府/⽴立法委員/張慶忠/ { 姓名: “張慶忠” 黨籍: “KMT”, 選區: “新北市”, 參與院會紀錄:
{…}, 聯絡⽅方式: { TEL: ‘…’, 地址: ‘…’ }, 經歷: [ … ] } Resource Entry
gov.tw/財產申報紀錄/張慶忠/ /政府/財產申報紀錄/張慶忠/ { 股票⾯面額總額: “兩億多很多”, ⼟土地持有總⾯面積: “8245.5坪”, … } Resource
Entry
gov.tw/投票紀錄/張慶忠/ /政府/投票紀錄/張慶忠/ { 沒有投票: 7, 贊成: 79, 反對: 271, 紀錄:
[ { 表決內容: 交通資訊雲端blahblah, 個⼈人投票: 贊成, 表決結果: 通過, ⽇日期: 2014-01-27 }, … ] } Resource Entry
蔡正元:「我違反黨紀第三名」
gov.tw/脫黨表決紀錄/蔡正元/ /政府/脫黨表決紀錄/蔡正元/ { 脫黨投票紀錄: [] } Resource Entry
gov.tw/legislators gov.tw/legislators/張慶忠/ gov.tw/campaign-fianaces/ gov.tw/campaign-fianaces/林鴻池
gov.tw/legislators gov.tw/legislators/張慶忠/ gov.tw/campaign-fianaces/ gov.tw/campaign-fianaces/林鴻池 http:// http:// http:// http://
None
None
Q?
1. Thinking in Resources 2. HTTP Verb 3. Links between
Resources
gov.tw/legislators gov.tw/legislators/張慶忠/ gov.tw/campaign-fianaces/ gov.tw/campaign-fianaces/林鴻池 http:// http:// http:// http://
Create Read Update Delete
Create Read Update Delete gov.tw/legislators/張慶忠/
Create Read Update Delete POST GET PUT DELETE HTTP Verb
POST GET PUT DELETE gov.tw/legislators/張慶忠/
POST GET PUT DELETE gov.tw/legislators/張慶忠/ gov.tw/legislators/張慶忠/ gov.tw/legislators/張慶忠/ gov.tw/legislators/
Z > B • 設計好 URL,新增/修改/刪除的介⾯面也⾃自動定義好了 • 更新介⾯面⼀一致 • http://gov.tw/create_legislator.php?name=…
• http://gov.tw/legislator_delete.php?name=…
Q?
1. Thinking in Resources 2. HTTP Verb 3. Links between
Resources
gov.tw/legislators/張慶忠/ { 姓名: “張慶忠” 黨籍: “KMT”, 選區: “新北市”, 參與院會紀錄: {…},
聯絡⽅方式: { TEL: ‘…’, 地址: ‘…’ }, 經歷: [ … ] } 投票紀錄? 財產紀錄? 選舉得票紀錄? GET
超連結
gov.tw/legislators/張慶忠/ { 姓名: “張慶忠” 黨籍: “KMT”, 選區: “新北市”, 參與院會紀錄: {…},
聯絡⽅方式: { TEL: ‘…’, 地址: ‘…’ }, 經歷: [ … ], 投票紀錄: “/投票紀錄/張慶忠/”, 財產紀錄: “/財產紀錄/張慶忠/” }
HATEOAS • Hypermedia as the Engine of Application State •
直接在 Representation 中建⽴立 Resource 之間的連 結,⽽而不是透過外部⽂文件 • Decoupling Server and Client.
gov.tw/legislators/張慶忠/ { 姓名: “張慶忠” 黨籍: “KMT”, 選區: “新北市”, 參與院會紀錄: {…},
聯絡⽅方式: { TEL: ‘…’, 地址: ‘…’ }, 經歷: [ … ], 投票紀錄: “/投票紀錄/張慶忠/”, 財產紀錄: “/財產紀錄/張慶忠/”, 罷免: “/recalls/張慶忠” }
RESTful • 從資源的⾓角度思考 • 套上 HTTP Verb 就有標準的操作介⾯面 • 透過
link 建⽴立資料間的關聯 RECAP
Q?
PgREST Javascript and REST API in your DB http://pgre.st
PgREST is… • … a JSON document store • …
running inside PostgreSQL • … working with existing relational data • … capable of loading Node.js modules • … compatible with MongoLab’s REST API • … compatible with Firebase API (new)
From Data… 姓名 電話 黨籍 0 張慶忠 02-123-4567 KMT 1
林鴻池 02-123-4567 KMT 2 ⺩王⾦金平 02-123-4567 KMT 3 柯建銘 02-123-4567 DPP Table: legislators
… to REST API http://localhost:3000/collections/legislators [ { id: 0, 姓名:
柯建銘 … }, { … }, … ] > pgrest —db mydb
… with query http://localhost:3000/collections/legislators?q={id:0} … RESTful http://localhost:3000/collections/legislators GET POST PUT
DELETE
http://pgre.st
Thank you!