设计公共API的六个注意事项
?
API by thesmith
俗話說:“好東西就要貢獻出來和大家一起分享”,尤其是在互聯(lián)網(wǎng)業(yè)務(wù)高度發(fā)達的今天,如果你的創(chuàng)業(yè)公司提供了一項很酷的技術(shù)或者服務(wù),并且其他用戶也非常喜歡該產(chǎn)品,在這種情況下,最好的解決方案是什么呢?把它作為一項服務(wù)——通過RESTful API的形式進行開放共享。
嗨,別忘了,如果這樣做,未來它或許會像Twitter那么有名。當然它可能也會給你帶來些榮譽,或者會給你帶來不菲的收入,好了,下面讓我們來談?wù)勅绾巫鲆粋€API呢?
提供一個基于內(nèi)部架構(gòu)之上的相同接口,打開它,最后在諸如HackerNews、Twitter、和Reddit 這類的技術(shù)論壇上宣布一下,這樣就好了嗎?就這么簡單嗎?
答案當然是否定的,如果要提供一個優(yōu)質(zhì)的公共API接口,你至少需要做到以下六點:
- 授權(quán)開發(fā)人員的規(guī)則
- 注意限流控制
- 確定是否要收費
- 通常,如果收費,那么請求越多,錢就越多——你需要準備一個計價表
- 利用好工具對服務(wù)端進行監(jiān)控
- 好的技術(shù)和幫助文檔
- 支持
- 支持
- 支持
..........
以上提到的,都是你必須要提供的。
注意事項
在權(quán)限分配方面,你需要根據(jù)客戶來提供相應(yīng)的API接口?;蛟S有些API需要采取不同的配額,或許限流的多少,這些都需要取決于所需資源和服務(wù)請求數(shù)。
仔細思考一下,這遠比討價還價來的更劃算一些——只需提供一個API在外面,如果該API比較受歡迎,它還會給你的創(chuàng)業(yè)帶來些額外的收入。
幾年前,我曾開放一個自己做的API,僅僅是一個REST調(diào)用,我自己都無法保證它是否真正能夠使用,當然最后結(jié)果的確是這樣,而且問題很多。
許多人在我毫不知情的情況下使用該API,更不用說監(jiān)控了。直到有一天,我突然發(fā)現(xiàn)服務(wù)器開始不穩(wěn)定并且無論我怎么調(diào)整都沒有恢復(fù),最后關(guān)閉所有應(yīng)用程序,可是服務(wù)器仍然沒有恢復(fù)正常。
于是我想起了那個開放的API,我發(fā)現(xiàn)它在HackerNews、 Reddit和Twitter上都受到了不同的關(guān)注。當我關(guān)閉這個API入口并且服務(wù)器恢復(fù)正常的時候,我竟然收到郵件:“Hey,到底怎么了?我一直在使用那個API,你怎敢把它給關(guān)了呢?”
什么,你都沒有告訴我在使用它,沒禮貌的家伙!
當然,這并不是他們的錯,雖然我留有開發(fā)賬號,限流,使用配額諸如此類的信息在上面,但是開發(fā)人員更多是看到一個很酷的API,便開始使用它。
如何恰當?shù)奶峁┮粋€API?
Auth, by oztenphoto
正如上面提到的,需要準備許多東西,如果希望成為你和用戶之間非常愉快的體驗,尤其是對用戶來說。其中一個方法是自己動手構(gòu)建所有的基礎(chǔ)設(shè)施——但這需要大量的時間而這并不是很性感的做法。專注于產(chǎn)品核心問題比確保其他的工作更重要。
幸運的是,目前已經(jīng)有一些服務(wù)可以讓API使用起來更簡單更方便。
據(jù)我所知道有3scale,Mashape和Mashery。
基本上所有的這些服務(wù)都需要提供諸如:開發(fā)者密鑰,一個主文檔,執(zhí)行速度限制、確保分配正確以及一系列分析工具等等。你需要提供一個像樣的API服務(wù)不僅要讓開發(fā)人員滿意,還要讓你的服務(wù)器也滿意才行。
API的主要差異在與如何實現(xiàn)?當3scale在服務(wù)器端不停的問:“嗨,這個用戶做的怎樣?可以嗎?好嗎?”的時候,Mashape和Mashery僅提供一種代理工作機制,對用戶進行保持跟蹤并且只有在適當?shù)臅r候才會發(fā)送請求。
這意味著你必須提供一些Mashape可以理解的標準,但很酷的是,他們會在客戶端根據(jù)相應(yīng)地平臺自動創(chuàng)建一些庫,并且他們是唯一的提供商,這樣就可以采取收費措施,所以這樣也就迎合了他們自己的想法,是不是很帥!
接下來,做一款炫的產(chǎn)品,提供API,并且讓它得到關(guān)注吧。
總結(jié)
以上是生活随笔為你收集整理的设计公共API的六个注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个开源工作者对开源与赚钱的一些想法
- 下一篇: swift5以上版本的代理的实现,详细教