在API項目中,有官方支持的客戶端才能給API社區傳達積極的信息。
沒有官方支持客戶的API就像是沒有方向盤的汽車??赡苁禽v好車,但是卻哪兒也去不了。
當然可以做一個方向盤,但這會是一項耗時的工作而且還會有風險。集成“方向盤”這件事情制造商當然比你更在行了。
雖然承認這一點有點尷尬,但我也曾經是不愿替自己的API項目開發官方客戶端的。我們會說:“我們不能所有事情都支持。手上積壓的無需學習一門全新語言的工作就已經夠多了。”雖然這樣的心態不算壞,但卻有點誤導人。
最重要的是,API不僅僅只是關乎代碼了,還與社區有關。開發者之所以“團結在自己喜愛的API周圍”,是因為開發API的公司尊重他們的價值,并且跟社區一起讓API變得更好。
如果在Java API客戶端上認真嘗試,并且把它開源出來讓更聰明的人改進它的話,那就不會給其他Java開發者造成傷害。
沒有官方支持客戶端的API就像無源之水,會讓API變得很糟糕。預期你的消費者從零開始集成你的API,你所傳達出來的訊息是,你的API并不是組織優先要考慮的。官方開源的API客戶端表明你的API有更高水平的支持,同時也鼓勵你和消費者之間進行開放協作和討論。
PHP,COBOL,Ruby還是C#?
不幸的是,我們都知道光“有”官方API客戶端并沒有實質性的作用。有很多事情需要考慮和籌謀,最重要的是該支持多少種語言。
確切的回答要取決于API本身和組織的能力,但最常見的三種要支持的語言是Ruby、PHP和Node.js(盡管Go、Python和Java也非常流行)。
你還應該隨時掌握社區的動態。盡管第三方客戶端未必需要得到“官方支持”,但無疑可以得到你的組織打上“官方推薦”的標簽。這是跟社區互動的一種很好的方式,而且并不需要你承擔太多東西。
開源你的API客戶端
因為你要用若干不同語言開發多個開源項目,所以知道每一種語言開發和部署的最佳實踐至關重要。
比方說,雖然在開發和維護PHP庫方面你可能是位大師,但你可能還得重溫一下RubyGems或者Node Package Manager這樣的服務。開源API項目意味著遵循最佳實踐不是可有可無的,因為你是把自己面向社區大部分人開放,要接受他們挑剔的目光。很多情況下,這是很有價值的事情,但如果只是半成品就拿出來說Python庫做好了,這樣是蒙不了人的。
開源你的API客戶端是一件很值得贊嘆的事,但你永遠都應該確保社區遵循一定的規則。GitHub對執行貢獻者指南上有出色的支持,還有一個出色的內置問題跟蹤器,但是你的成功之路是無法自動化的。
你的API項目至少應該有一個README文件,里面應該概括了有關的每一條重要信息??紤]以下問題:
如何進行單元測試?
是不是在利用持續集成/持續交付工具,如果是,貢獻者如何才能利用這些工具?
項目的授權模式是什么樣的?
這些都是很重要的事情,如果處理得好,就可以把一個開源項目引向成功。這一成就反過來也會導致你的官方API客戶端的成功。
最后,你的官方API客戶端的開發和管理應該是有趣的、能打造社區體驗的。盡管這類努力增加了你的團隊對API的投入,但你們的付出在消費者和貢獻者眼里是有目共睹的。