hack & go! redefining api @ mopcon 2014

Post on 28-Nov-2014

1.643 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

top related