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