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