是否應(yīng)該提供開放平臺(tái)?
可能你會(huì)很興奮,覺得開放平臺(tái)是一個(gè)了不起的技術(shù),因?yàn)閯e人也可以使用這個(gè)創(chuàng)造無限可能。當(dāng) 今最流行的開放平臺(tái)實(shí)現(xiàn)方式就是 RESTful API 服務(wù)。
而且別忘了,Twitter 就是靠開放平臺(tái)大放光彩的,所以依靠開放平臺(tái),甚至你也可以倒騰出第二 個(gè)Twitter。
恩,那么我們肯定要做開放平臺(tái)API了?
我們會(huì)先從現(xiàn)在系統(tǒng)的架構(gòu)上分出一部分接口出來提供給開發(fā)者,然后在各種各樣的IT社區(qū),新聞 報(bào)道,微博上面號(hào)召開發(fā)者來開發(fā)應(yīng)用。應(yīng)該就是這么簡單,對吧?
錯(cuò)!
如果你要提供開放API給開發(fā)者,那么你需要:
- 認(rèn)證開發(fā)者的途徑
- 抑制并控制住開發(fā)者的加入以防止大家蜂擁而上
- 決定這些API是否收費(fèi)
- 如果收費(fèi),一般請求越多收費(fèi)越多,意味你需要加強(qiáng)API調(diào)用的限額分配問題
- 一個(gè)優(yōu)秀的監(jiān)測工具來查看你的服務(wù)時(shí)刻發(fā)生的變化
- 優(yōu)秀的API文檔讓開發(fā)者快速學(xué)習(xí)
- 支持
- 支持
- 支持
- ......
上面說到的這些你都能做到嗎?
而且別忘了權(quán)限問題,也許你 希望對于高級的開發(fā)者能調(diào)用更多的API。也可能有些API對于某些開 發(fā)者有更多的調(diào)用配額,在考慮這些問題的時(shí)候也別忘了將服務(wù)器資源考慮進(jìn)去。
但如果有人突然提醒你在考慮這些東西的時(shí)候是否一開始考慮到收費(fèi)問題呢?
好吧,希望你的大腦還比較清醒。
幾年前我就直接為開發(fā)者提供了一個(gè)API,而壓根沒有考慮到上面的問題 -- 僅僅只是一個(gè)REST調(diào)用 難道也會(huì)出問題,等到真實(shí)上線后,問題一大堆。
太多人在使用那個(gè)API而我卻根本沒法知道到底誰調(diào)用了,我唯一能做的就是看到服務(wù)器突然崩掉。。。
后來才想起是因?yàn)樵赥witter以及Reddit與其他IT社區(qū)站點(diǎn)公布了太多的新聞,導(dǎo)致大量的網(wǎng)絡(luò)請求 。而在我后來為了重新調(diào)整而關(guān)掉服務(wù)器后就開始收到大量憤怒的開發(fā)者郵件“喂,我的東西就是 靠你的API混的,你怎么敢隨便關(guān)掉?”
草泥馬,你這樣的開發(fā)者為什么在使用之前也不跟我說說。
當(dāng)然,大家都清楚這些開發(fā)者是沒錯(cuò)的,我應(yīng)該為每個(gè)開發(fā)者創(chuàng)建一個(gè)賬戶,分配一定的API調(diào)用份 額,那么這些開發(fā)者就不會(huì)罵我而相反會(huì)夸獎(jiǎng)這個(gè)API很酷。
如何提供一個(gè)合適的API
正如前面說到的,你需要準(zhǔn)備一大堆的東西。尤其是你的用戶。
最土的辦法就是這一切都是你自己做,但聽起來就已經(jīng)很嚇人了。不過好在是現(xiàn)在已經(jīng)有了一些服 務(wù)商提供了上面所需要的很多東西。
相同點(diǎn)是他們都提供了類似開發(fā)者Key,提供瀏覽開放平臺(tái)API文檔的托管主機(jī),提供限制API調(diào)用請 求數(shù)量的功能以及精確的針對某個(gè)開發(fā)者調(diào)用權(quán)限或請求次數(shù)的配額,而且都少不了給你的網(wǎng)絡(luò)分 析工具。你要做的就是為你的開發(fā)者提供API。
不過他們?nèi)哌€是有很多區(qū)別的,尤其是實(shí)現(xiàn)方式,3scale運(yùn)作起來就像在不斷在問"這個(gè)用戶有權(quán) 限嗎,是現(xiàn)在就執(zhí)行還是等會(huì)等等?"。Mashape與Mashery更像是代理方式運(yùn)行,然后在他們服務(wù)器 上會(huì)保存跟蹤我們API的記錄。