Hack & Go! Redefining API @ MOPCON 2014
description
Transcript of Hack & Go! Redefining API @ MOPCON 2014
Hack & Go!
蒸汽車頭和高速鐵路的競賽
Ben Lue / COIMOTION
二個科技宅爸的對話
IaaS, PaasS, SaaS 中間缺了好大一塊
這麼重要的事怎麼沒有人做
是啊, PaaS 應該不是重點吧
… 這個坑很大啊
API is …
API Portal
Real-Time Sync
firebase
Cloud Storage
parse.com
冷氣 + 皮椅 + 行車記錄器 = 汽車?
Coimpedia:汽車 =用 50 ~ 150km/hr 的速度,依
我的意願到我想到的地方
API…不等於 function call
格式要有一致性、可理解性、可程式性
包裹式的功能,全有全無的執行結果
提供開箱即用的功能
完整的安全機制
個體開發者懶得寫、不好寫、不能寫的功能
格式
RESTful 點出了問題的所在
但它不是最終的解答
GETPUTPOSTDELETE
+ /resource/id
? ? ?
+ /resource/id
var request = require('request');
var options = { url: 'https://foo.com/myPage/4'};
request(options, function(err, response, body) {
...});
修改、刪除、查詢?
無法從 URL 中看出究竟是查詢、修改甚至是刪除
對程式開發而言是一件危險的事
我們對一個物件的動作不是只有CRUD 四件事
這是 RESTful 的盲點
Search?Tag?
Reply?
/reposiroty/rs/op/id
符合一致性、可理解性
iRESTful: improved RESTful
HTTP_method /resource/id
Semantic Endpoint Format (SEF)
Package Class Method
Repository? Resource? Op?
可設定性(Configurable)
Pagination (_ps, _pn)
Include/exclude return fields
可程式性(Programmable)
GET /myLib/books/search{ key: ‘ 樂活’ , forEach: {
url: '/myLib/favi/hasBook',param: {
bkID: $item.bkID}
}}
包裹性
Multiple functions in a single call
Work like a transaction
Options to prevent APIs from bloated
/page/list
/page/list?getAll=&pri=
/page/listPriv
/page/listPub
/page/listEn
/page/listZh
/page/listAllLoc
API 過度膨脹:
以 options 維持精簡:
開箱即用
User Management
Content Management (CMS)
Social Website Support (FB, Google+)
Search
Security Measures
There are ….
interesting things..
coming from …
There are ….
interesting things..
coming from … 旅遊
墾丁
美食
…
旅遊
墾丁
美食
There are ….
interesting things..
coming from …
旅遊
墾丁
美食+
旅遊
墾丁
美食
…
• page/addLoc/[pageID]
• page/locInfo/[pageID]
• page/removeLoc/[pageID]
• page/tagLoc/[pageID]
單一資源的 API 過度膨脹
• page/create• page/view/[pageID]
• geoLoc/add• geoLoc/info/[geoID]
• page.geoLoc/add/[pageID]• page.geoLoc/info/[pageID.geoID]
• geoLoc.page/create/[geoID]• geoLoc.page/view/[geoID.pageID]
• page.geoLoc/search?lat=&lng=
• geoLoc.page/search?key= 美食
模組
讓開發者不需寫任何程式立即可用的後台功能
COIMOTION 模組
核心功能
網頁管理
民宿管理
活動管理
虛擬商店 圖書管理
內容集
墾丁民宿 1000+ 民宿的詳細資料
路跑賽事 400+ 全國路跑活動
藝文活動 11000+ 全國藝文活動資訊
內容集
便利商店 8000 全台便利商店的詳細資料
鐵路時刻1200+ 台鐵班次, 4,800,000+ 班車時刻
圖書資料 150,000+ 本書籍資料和介紹
coServ
Showcase
COIMOTION Link Up With EzoApp
Try this ready-to-use template
http://tw.coimotion.com
http://www.coservjs.org
http://facebook.com/coimotion