hack & go! redefining api @ mopcon 2014

46
Hack & Go! 蒸蒸蒸蒸蒸蒸蒸蒸蒸蒸蒸蒸 Ben Lue / COIMOTION

Upload: ben-lue

Post on 28-Nov-2014

1.643 views

Category:

Software


1 download

DESCRIPTION

目前已知的 API 服務都還只在摸索的階段。這個簡報解釋了 API 服務為何會徹底改變網路應用開發的模式,並說明了一個好的 API 應有的特色。簡報中也說明了 COIMOTION 對開發者提供了非常有用的功能,並介紹使用 COIMOTION 的成功範例。

TRANSCRIPT

Page 1: Hack & Go!  Redefining API @ MOPCON 2014

Hack & Go!

蒸汽車頭和高速鐵路的競賽

Ben Lue / COIMOTION

Page 2: Hack & Go!  Redefining API @ MOPCON 2014

二個科技宅爸的對話

IaaS, PaasS, SaaS 中間缺了好大一塊

這麼重要的事怎麼沒有人做

是啊, PaaS 應該不是重點吧

… 這個坑很大啊

Page 3: Hack & Go!  Redefining API @ MOPCON 2014

API is …

API Portal

Real-Time Sync

firebase

Cloud Storage

parse.com

Page 4: Hack & Go!  Redefining API @ MOPCON 2014

冷氣 + 皮椅 + 行車記錄器 = 汽車?

Coimpedia:汽車 =用 50 ~ 150km/hr 的速度,依

我的意願到我想到的地方

Page 5: Hack & Go!  Redefining API @ MOPCON 2014

API…不等於 function call

Page 6: Hack & Go!  Redefining API @ MOPCON 2014

格式要有一致性、可理解性、可程式性

包裹式的功能,全有全無的執行結果

提供開箱即用的功能

完整的安全機制

個體開發者懶得寫、不好寫、不能寫的功能

Page 7: Hack & Go!  Redefining API @ MOPCON 2014

格式

Page 8: Hack & Go!  Redefining API @ MOPCON 2014

RESTful 點出了問題的所在

但它不是最終的解答

Page 9: Hack & Go!  Redefining API @ MOPCON 2014

GETPUTPOSTDELETE

+ /resource/id

Page 10: Hack & Go!  Redefining API @ MOPCON 2014

? ? ?

+ /resource/id

Page 11: Hack & Go!  Redefining API @ MOPCON 2014

var request = require('request');

var options = { url: 'https://foo.com/myPage/4'};

request(options, function(err, response, body) {

...});

修改、刪除、查詢?

Page 12: Hack & Go!  Redefining API @ MOPCON 2014

無法從 URL 中看出究竟是查詢、修改甚至是刪除

對程式開發而言是一件危險的事

Page 13: Hack & Go!  Redefining API @ MOPCON 2014

我們對一個物件的動作不是只有CRUD 四件事

這是 RESTful 的盲點

Search?Tag?

Reply?

Page 14: Hack & Go!  Redefining API @ MOPCON 2014

/reposiroty/rs/op/id

符合一致性、可理解性

iRESTful: improved RESTful

HTTP_method /resource/id

Semantic Endpoint Format (SEF)

Page 15: Hack & Go!  Redefining API @ MOPCON 2014

Package Class Method

Repository? Resource? Op?

Page 16: Hack & Go!  Redefining API @ MOPCON 2014

可設定性(Configurable)

Page 17: Hack & Go!  Redefining API @ MOPCON 2014

Pagination (_ps, _pn)

Include/exclude return fields

Page 18: Hack & Go!  Redefining API @ MOPCON 2014

可程式性(Programmable)

Page 19: Hack & Go!  Redefining API @ MOPCON 2014

GET /myLib/books/search{ key: ‘ 樂活’ , forEach: {

url: '/myLib/favi/hasBook',param: {

bkID: $item.bkID}

}}

Page 20: Hack & Go!  Redefining API @ MOPCON 2014

包裹性

Page 21: Hack & Go!  Redefining API @ MOPCON 2014

Multiple functions in a single call

Work like a transaction

Options to prevent APIs from bloated

Page 22: Hack & Go!  Redefining API @ MOPCON 2014

/page/list

/page/list?getAll=&pri=

/page/listPriv

/page/listPub

/page/listEn

/page/listZh

/page/listAllLoc

API 過度膨脹:

以 options 維持精簡:

Page 23: Hack & Go!  Redefining API @ MOPCON 2014

開箱即用

Page 24: Hack & Go!  Redefining API @ MOPCON 2014

User Management

Content Management (CMS)

Social Website Support (FB, Google+)

Search

Security Measures

Page 25: Hack & Go!  Redefining API @ MOPCON 2014

There are ….

interesting things..

coming from …

Page 26: Hack & Go!  Redefining API @ MOPCON 2014

There are ….

interesting things..

coming from … 旅遊

墾丁

美食

Page 27: Hack & Go!  Redefining API @ MOPCON 2014
Page 28: Hack & Go!  Redefining API @ MOPCON 2014

旅遊

墾丁

美食

Page 29: Hack & Go!  Redefining API @ MOPCON 2014

There are ….

interesting things..

coming from …

旅遊

墾丁

美食+

旅遊

墾丁

美食

Page 30: Hack & Go!  Redefining API @ MOPCON 2014

• page/addLoc/[pageID]

• page/locInfo/[pageID]

• page/removeLoc/[pageID]

• page/tagLoc/[pageID]

單一資源的 API 過度膨脹

Page 31: Hack & Go!  Redefining API @ MOPCON 2014

• 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 32: Hack & Go!  Redefining API @ MOPCON 2014

• page.geoLoc/search?lat=&lng=

• geoLoc.page/search?key= 美食

Page 33: Hack & Go!  Redefining API @ MOPCON 2014

模組

Page 34: Hack & Go!  Redefining API @ MOPCON 2014

讓開發者不需寫任何程式立即可用的後台功能

Page 35: Hack & Go!  Redefining API @ MOPCON 2014

COIMOTION 模組

核心功能

網頁管理

民宿管理

活動管理

虛擬商店 圖書管理

Page 36: Hack & Go!  Redefining API @ MOPCON 2014

內容集

墾丁民宿 1000+ 民宿的詳細資料

路跑賽事 400+ 全國路跑活動

藝文活動 11000+ 全國藝文活動資訊

Page 37: Hack & Go!  Redefining API @ MOPCON 2014

內容集

便利商店 8000 全台便利商店的詳細資料

鐵路時刻1200+ 台鐵班次, 4,800,000+ 班車時刻

圖書資料 150,000+ 本書籍資料和介紹

Page 38: Hack & Go!  Redefining API @ MOPCON 2014

coServ

Page 39: Hack & Go!  Redefining API @ MOPCON 2014

Showcase

Page 40: Hack & Go!  Redefining API @ MOPCON 2014
Page 41: Hack & Go!  Redefining API @ MOPCON 2014
Page 42: Hack & Go!  Redefining API @ MOPCON 2014
Page 43: Hack & Go!  Redefining API @ MOPCON 2014
Page 44: Hack & Go!  Redefining API @ MOPCON 2014

COIMOTION Link Up With EzoApp

Page 45: Hack & Go!  Redefining API @ MOPCON 2014

Try this ready-to-use template

Page 46: Hack & Go!  Redefining API @ MOPCON 2014

http://tw.coimotion.com

http://www.coservjs.org

http://facebook.com/coimotion