設計公共API的六個注意事項

摘要:俗話說:“好東西就要貢獻出來和大家一起分享”,尤其是在互聯網業務高度發達的今天,如果你的創業公司提供了一項很酷的技術或者服務,并且其他用戶也非常喜歡該產品,在這種情況下,最好的解決方案是什么呢?把它作為一項服務——通過RESTful API的形式進行開放共享。

?

API by thesmith

俗話說:“好東西就要貢獻出來和大家一起分享”,尤其是在互聯網業務高度發達的今天,如果你的創業公司提供了一項很酷的技術或者服務,并且其他用戶也非常喜歡該產品,在這種情況下,最好的解決方案是什么呢?把它作為一項服務——通過RESTful API的形式進行開放共享。

嗨,別忘了,如果這樣做,未來它或許會像Twitter那么有名。當然它可能也會給你帶來些榮譽,或者會給你帶來不菲的收入,好了,下面讓我們來談談如何做一個API呢?

提供一個基于內部架構之上的相同接口,打開它,最后在諸如HackerNews、Twitter、和Reddit 這類的技術論壇上宣布一下,這樣就好了嗎?就這么簡單嗎?

答案當然是否定的,如果要提供一個優質的公共API接口,你至少需要做到以下六點

  • 授權開發人員的規則
  • 注意限流控制
  • 確定是否要收費
  • 通常,如果收費,那么請求越多,錢就越多——你需要準備一個計價表
  • 利用好工具對服務端進行監控
  • 好的技術和幫助文檔
  • 支持
  • 支持
  • 支持

..........

以上提到的,都是你必須要提供的。

注意事項

在權限分配方面,你需要根據客戶來提供相應的API接口。或許有些API需要采取不同的配額,或許限流的多少,這些都需要取決于所需資源和服務請求數。

仔細思考一下,這遠比討價還價來的更劃算一些——只需提供一個API在外面,如果該API比較受歡迎,它還會給你的創業帶來些額外的收入。

幾年前,我曾開放一個自己做的API,僅僅是一個REST調用,我自己都無法保證它是否真正能夠使用,當然最后結果的確是這樣,而且問題很多。

許多人在我毫不知情的情況下使用該API,更不用說監控了。直到有一天,我突然發現服務器開始不穩定并且無論我怎么調整都沒有恢復,最后關閉所有應用程序,可是服務器仍然沒有恢復正常。

于是我想起了那個開放的API,我發現它在HackerNews、 Reddit和Twitter上都受到了不同的關注。當我關閉這個API入口并且服務器恢復正常的時候,我竟然收到郵件:“Hey,到底怎么了?我一直在使用那個API,你怎敢把它給關了呢?”

什么,你都沒有告訴我在使用它,沒禮貌的家伙!

當然,這并不是他們的錯,雖然我留有開發賬號,限流,使用配額諸如此類的信息在上面,但是開發人員更多是看到一個很酷的API,便開始使用它。

如何恰當的提供一個API?

Auth, by oztenphoto

正如上面提到的,需要準備許多東西,如果希望成為你和用戶之間非常愉快的體驗,尤其是對用戶來說。其中一個方法是自己動手構建所有的基礎設施——但這需要大量的時間而這并不是很性感的做法。專注于產品核心問題比確保其他的工作更重要。

幸運的是,目前已經有一些服務可以讓API使用起來更簡單更方便。

據我所知道有3scale,Mashape和Mashery。

基本上所有的這些服務都需要提供諸如:開發者密鑰,一個主文檔,執行速度限制、確保分配正確以及一系列分析工具等等。你需要提供一個像樣的API服務不僅要讓開發人員滿意,還要讓你的服務器也滿意才行。

API的主要差異在與如何實現?當3scale在服務器端不停的問:“嗨,這個用戶做的怎樣?可以嗎?好嗎?”的時候,Mashape和Mashery僅提供一種代理工作機制,對用戶進行保持跟蹤并且只有在適當的時候才會發送請求。

這意味著你必須提供一些Mashape可以理解的標準,但很酷的是,他們會在客戶端根據相應地平臺自動創建一些庫,并且他們是唯一的提供商,這樣就可以采取收費措施,所以這樣也就迎合了他們自己的想法,是不是很帥!

接下來,做一款炫的產品,提供API,并且讓它得到關注吧。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450811.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450811.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

go 交叉編譯

golang中windows交叉編譯 env GOOSlinux GOARCHamd64 go build .打包鏡像 FROM alpineMAINTAINER "congge"ADD ./casino_niuniu /usr/local/casino_niuniu/bin/casino_niuniu ADD ./templates /usr/loca/lcasino_niuniu/bin/templates ADD ./public /usr/local/casin…

IntelliJ Idea 2017 免費激活方法

見:https://www.cnblogs.com/suiyueqiannian/p/6754091.html 1. 到網站 http://idea.lanyus.com/ 獲取注冊碼。 2.填入下面的license server: http://intellij.mandroid.cn/   http://idea.imsxm.com/   http://idea.iteblog.com/key.php 以上方法驗證均可以

P3193 [HNOI2008]GT考試

傳送門 容易看出是道DP 考慮一位一位填數字 設 f [ i ] [ j ] 表示填到第 i 位,在不吉利串上匹配到第 j 位時不出現不吉利數字的方案數 設 g [ i ] [ j ] 表示不吉利串匹配到第 i 位,再添加一個數字,使串匹配到第 j 位的方案數 那么方程顯然為…

LeetCode刷題攻略

目錄 一、LeetCode簡介 二、刷leetcode的主要目的 三、常用的數據結構 四、常用的算法思想 五、選擇算法題 1、刷題選擇 2、刷題方法 方法一:順序法 方法二:標簽法 方法三:隨機法 方法四:必殺法 六、刷題攻略 TIP 1&…

SQLserver數據庫反編譯生成Hibernate實體類和映射文件

一、建立項目和sqlserver數據庫 eclipse,我使用的版本是neon3 二、Data Source Explorer 選擇OK 在data source Explorer的Database Connections 選擇New 填寫好General的連接信息 新建New Driver Definition 填寫完選擇OK 選擇剛才的Drivers Test Connetion測試 N…

最受歡迎的5大Linux發行版

摘要:要統計有多少人在使用那款Linux發行版幾乎是不可能的事情,但我們可以使用一些在線分析工具來大概地看看哪些Linux發行版更受歡迎。 Google Trends的數據顯示,Ubuntu用戶正在流向Mint,但依然在各方面都比其它Linux發行版更有優…

C#動態操作DataTable(新增行、列、查詢行、列等)

public void CreateTable(){//創建表DataTable dt new DataTable();//1、添加列dt.Columns.Add("Name", typeof(string)); //數據類型為 文本//2、通過列架構添加列DataColumn age new DataColumn("Age", typeof(Int32)); //數據類型為 整形DataColumn…

使用IntelliJ IDEA 配置Maven(入門)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 下載Maven 官方地址:http://maven.apache.org/download.cgi 解壓并新建一個本地倉庫文件夾 2.配置本地倉庫路徑 3.配…

[算法]不使用*、/、+、-、%操作符求一個數的1/3

摘要:算法一直是程序員進階的一道龍門,通常算法都是為了更高效地解決問題而創造的,但也有的只是出于學術性,并不在意其實際意義。這是近日在國外技術問答網站stackoverflow的一個熱門問題,不知道你能給出幾種解決方法&…

2022屆互聯網秋招備戰

文章目錄1、何為秋招?1.1應屆生身份1.2秋招、春招、校招1.3、社招、海投2.秋招信息如何獲取?3、如何備戰秋招?3.1、簡歷(ps做簡歷)3.2、筆試準備3.3、面試準備4、日常實習和暑假實習?1、春招≠暑期實習2、什…

php 兩變量值互換 方法

//方法一:$a "abc";$b"def";$a $a^$b;$b $b^$a;$a $a^$b;//方法二:list($a, $b) array($b, $a);//方法三:$a $a . $b;$b strlen( $b );$b substr( $a,0,(strlen($a)- $b ));$a substr( $a, strlen($b));//方法四&…

MySQL5.7 group by新特性,報錯1055

項目中本來使用的是mysql5.6進行開發,切換到5.7之后,突然發現原來的一些sql運行都報錯,錯誤編碼1055,錯誤信息和sql_mode中的“only_full_group_by“關,到網上看了原因,說是mysql5.7中only_full_group_by這…

IDEA中多行注釋及取消注釋快捷鍵

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1、一次性添加多行注釋的快捷鍵 首先選中要注釋區域,然后 ctrl/ 這個是多行代碼分行注釋,每行一個注釋…

為什么程序員不擅長估算時間?

摘要:時間估算是困難的,每一個程序員都有一個現實的估計區間,低于這個區間的估計意味著(構件,測試,檢查代碼的)時間開銷被低估了,超過這個區間的估計意味著這個任務太大而很難預估。…

red hat enterprise linux 7關閉防火墻的方法

2019獨角獸企業重金招聘Python工程師標準>>> red hat enterprise linux 7發布后,發現防火墻也變了,如何關閉防火墻呢,下面是方法 1.查看firewall的狀態 [rootsztech7 ~]# systemctl status firewalld firewalld.service - firewal…

IOS —— 網絡那些事(上) - http協議

作為一名并不太合格的程序員,今天要分享學習的成果,竟然講的是網絡相關HTTP協議的事情。(也算是復習了) 乍看HTTP協議的內容著實是十分復雜的,涉及到十分多互聯網"底層"框架的東西。今天就先撇開這部分詳細內…

【最新版】Java速成路線(急于找工作!)

文章目錄計算機網絡分層結構TCP/UDPHTTP/HTTPS狀態碼Cookie 和 SessionURI和URL操作系統線程和進程數據結構和算法數據結構算法設計模式(23種)單例工廠代理適配器觀察者模板實操工具Git/SVNMaven/GradleLinux基本操作NginxELKpostmanJAVA基礎語言基礎JVM…

Java Web Start實例

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 JWS讓用戶可以下載服務器端的Java Application到本機運行,并且沒有安裝、配置等繁瑣的操作JWS的運行原理:瀏覽器…

老派程序員——徒手實現偉大成就

摘要:本文介紹了三位非常著名的程序員:Ken Thompson,Joe Armstrong 和 Jamie Zawinski,他們是如何發明一門新語言,他們開發軟件時會像我們一樣使用當今流行的開發工具嗎?當讀Peter Seibel的精彩著作《編程人生:15位軟件…

互聯網大廠項目研發流程

文章目錄階段一:階段二:階段三:階段四:階段五:開發人員:測試人員:設計師:階段六:階段七:總結:本文章學習自:https://www.bilibili.com…