从涂鸦到发布 —— 理解API的设计过程
要想設(shè)計(jì)出可以正常運(yùn)行的Web API,對(duì)基于web的應(yīng)用的基本理解是一個(gè)良好的基礎(chǔ)。但如果你的目標(biāo)是創(chuàng)建出優(yōu)秀的API,那么僅憑這一點(diǎn)還遠(yuǎn)遠(yuǎn)不夠。設(shè)計(jì)優(yōu)秀的API是一個(gè)艱難的過(guò)程,如果它恰巧是你當(dāng)前的工作任務(wù),那么你很可能會(huì)感到手足無(wú)措。
不過(guò),優(yōu)秀的設(shè)計(jì)絕對(duì)是可以實(shí)現(xiàn)的。本文所描述的流程將幫助你獲得成功,我們將共同研究什么是優(yōu)秀的設(shè)計(jì),以及迭代式的流程如何幫助我們實(shí)現(xiàn)這一目標(biāo)。我們還將敘述設(shè)計(jì)的三個(gè)重要階段:草圖設(shè)計(jì)、原型設(shè)計(jì)以及實(shí)現(xiàn),同時(shí)還將介紹一些能夠讓你的工作變得更輕松的工具。
優(yōu)秀的API設(shè)計(jì)來(lái)自于迭代過(guò)程
在開(kāi)始設(shè)計(jì)API之前,我們必須理解它的目的。在你手動(dòng)設(shè)計(jì)之前,你應(yīng)當(dāng)了解為什么要設(shè)計(jì)這個(gè)API,如果在這方面需要幫助,有許多現(xiàn)成的資料可以參考。不過(guò),定義你的動(dòng)機(jī)僅僅是第一步,真正的訣竅在于直到實(shí)現(xiàn)為止,始終保持進(jìn)行正確的設(shè)計(jì)決策。
成功的API設(shè)計(jì)意味著要設(shè)計(jì)出一種接口,讓它的使用方式符合它的目的。作為API設(shè)計(jì)者來(lái)說(shuō),我們所做的每個(gè)決策都會(huì)影響到產(chǎn)品的成敗。設(shè)計(jì)過(guò)程中需要做出一些重大的決策,例如API所使用的傳輸協(xié)議、或它所支持的消息格式。但除此之外,還有許多相關(guān)的次要決定,例如接口的控制、名稱、關(guān)聯(lián)以及次序。而當(dāng)你將所有的決策集中在一起時(shí),它們將帶動(dòng)API的使用模式。如果你能夠做到每個(gè)決定都是正確的,那么這種模式將對(duì)API產(chǎn)生完美的支持與促進(jìn)作用。
如果你要做出一個(gè)正確的設(shè)計(jì)決策,很可能會(huì)先做出一個(gè)錯(cuò)誤的決策,并從中吸取經(jīng)驗(yàn)教訓(xùn)。實(shí)際上,你很可能會(huì)在多次犯錯(cuò)之后才能夠接近正確的決策。這也正是迭代的關(guān)鍵所在,因?yàn)闆](méi)有人能夠做到一次成功,但只要有足夠的機(jī)會(huì),你就能夠做到接近完美。
通過(guò)迭代方式進(jìn)行API設(shè)計(jì),這一點(diǎn)說(shuō)起來(lái)容易,但在實(shí)際應(yīng)用中做到這一點(diǎn)并不簡(jiǎn)單。我們所面臨的一個(gè)常見(jiàn)的挑戰(zhàn)在于,在某個(gè)API發(fā)布之后再進(jìn)行變更是非常困難的。事實(shí)上,對(duì)一個(gè)使用中的API進(jìn)行變更的代價(jià)很大,并且伴隨著很大的風(fēng)險(xiǎn)。或者借用Joshua Bloch的說(shuō)法:“公開(kāi)的API就像鉆石,它是永恒不變的。”
處理這一問(wèn)題的一種方式是在每次變更時(shí)不要破壞現(xiàn)有的接口,這是一種好習(xí)慣,也是優(yōu)秀API設(shè)計(jì)的一個(gè)主要原則。但有些時(shí)候,破壞性的變更是不可避免的,而基本層面的設(shè)計(jì)變更尤其具有侵略性。
換種思路,我們應(yīng)當(dāng)在接口發(fā)布之前就做好這些變更。在理想的情況下,在變更的代價(jià)變得高昂之前,就應(yīng)該消除易用性與設(shè)計(jì)方面的問(wèn)題。當(dāng)時(shí),只有在首次發(fā)布之前做到盡早開(kāi)始迭代,并保持頻繁的迭代,才能夠找到并修復(fù)這些問(wèn)題。
迭代式的設(shè)計(jì)過(guò)程
在每一次迭代中,我們都得到了一次對(duì)設(shè)計(jì)候選按其使用情況進(jìn)行評(píng)估的機(jī)會(huì)。舉例來(lái)說(shuō),開(kāi)發(fā)者是否能夠通過(guò)使用我們創(chuàng)建的產(chǎn)品實(shí)現(xiàn)他的工作目標(biāo)?這個(gè)接口真的能夠?qū)崿F(xiàn)嗎?如果我們要求他人使用這個(gè)API,他們又會(huì)有什么樣的感受?
通過(guò)設(shè)計(jì)與實(shí)現(xiàn)多個(gè)接口而不發(fā)布它們,應(yīng)該能夠?qū)崿F(xiàn)最佳的API設(shè)計(jì)。通過(guò)對(duì)每個(gè)接口進(jìn)行審查與測(cè)試,我們將對(duì)于如何改進(jìn)最終產(chǎn)品具有良好的洞察力。
但是在實(shí)踐中,這種壯觀的迭代式設(shè)計(jì)是不可能實(shí)現(xiàn)的。沒(méi)有幾個(gè)人能有足夠的時(shí)間、金錢(qián)或耐心去不斷地設(shè)計(jì)與實(shí)現(xiàn)一個(gè)個(gè)可以運(yùn)行的API。對(duì)于任何具有一定復(fù)雜度的接口來(lái)說(shuō),這種方式的迭代式設(shè)計(jì)會(huì)占用你過(guò)多的時(shí)間。
一個(gè)更合理的方式是在設(shè)計(jì)過(guò)程的早期就進(jìn)行迭代,這些早期的設(shè)計(jì)應(yīng)當(dāng)具有足夠的細(xì)節(jié),可展現(xiàn)改進(jìn)的最佳時(shí)機(jī),但又無(wú)需過(guò)度設(shè)計(jì)而導(dǎo)致實(shí)現(xiàn)的困難。隨著時(shí)間的推移,我們可以逐步地增加細(xì)節(jié)度(或保真度),并最終得到一個(gè)完整的實(shí)現(xiàn)。
這種逐步推進(jìn)的設(shè)計(jì)過(guò)程在設(shè)計(jì)界已經(jīng)非常流行了,它通常被分解為三個(gè)重要的階段:
草圖設(shè)計(jì)的強(qiáng)大作用
草圖設(shè)計(jì)是設(shè)計(jì)方面的一種普遍行為。著名建筑師Frank Gehry的草圖可謂天下聞名,以至于誕生了一部專門(mén)描述這些草圖的電影。他的許多建筑項(xiàng)目都是從在一疊紙上所畫(huà)的一系列草圖開(kāi)始的。Gehry總會(huì)畫(huà)上幾百?gòu)堖@樣的草圖,每一次都向良好的設(shè)計(jì)更靠近一步。
交互設(shè)計(jì)師Bill Verplank將草圖設(shè)計(jì)描述為設(shè)計(jì)過(guò)程中必不可少的第一步。Bill Buxton還專門(mén)寫(xiě)了一整本書(shū),用以介紹草圖設(shè)計(jì)方法對(duì)用戶體驗(yàn)設(shè)計(jì)的價(jià)值,并認(rèn)為它的關(guān)鍵特征在于它的可棄性、而且在所有探索方式中是成本最低的一種。
將草圖設(shè)計(jì)過(guò)程包含在API設(shè)計(jì)過(guò)程的早期階段,讓我們有機(jī)會(huì)體驗(yàn)接口的概念模型。這不僅是一次定義我們腦中已有的想法的好機(jī)會(huì),也讓我們有機(jī)會(huì)探索新的道路,并且提出“如果……會(huì)怎么樣?”這樣的問(wèn)題,并逐步走向真正的創(chuàng)新。
優(yōu)秀的草圖應(yīng)當(dāng)是易于創(chuàng)建、并且可以任意丟棄的。如果創(chuàng)建這些草圖花費(fèi)了許多時(shí)間、或是難度太高,那么你就難以丟棄它們。這種可棄性非常重要,它讓我們有機(jī)會(huì)承受住風(fēng)險(xiǎn)。
我們可以通過(guò)草圖設(shè)計(jì)嘗試不同類型的接口風(fēng)格,并捉住那些在我們腦海中時(shí)而閃現(xiàn)的抽象概念。一旦這些思想具體化,我們就能夠?qū)λ鼈冞M(jìn)行審查及討論。在過(guò)程中決定我們喜歡或是不喜歡某個(gè)特定的概念,然后在消化了這些知識(shí)后再次啟動(dòng)這一過(guò)程,并繪制新的草圖。
對(duì)于設(shè)計(jì)團(tuán)隊(duì)之外的用戶來(lái)說(shuō),他們很少會(huì)對(duì)草圖進(jìn)行評(píng)估。不僅是因?yàn)檫^(guò)早地對(duì)假設(shè)進(jìn)行驗(yàn)證是沒(méi)有價(jià)值的,并且在實(shí)際的項(xiàng)目中能夠進(jìn)行的用戶測(cè)試次數(shù)是有限的。通過(guò)真實(shí)的用戶對(duì)每種草圖都進(jìn)行測(cè)試的設(shè)想代價(jià)過(guò)高,而這種方式的收獲是非常有限的。
使用檔案進(jìn)行草圖設(shè)計(jì)
在進(jìn)行API的草圖設(shè)計(jì)時(shí),使用檔案(profile)或元語(yǔ)言(meta language)是一種非常實(shí)用的方式。檔案提供了一系列的概念,可用于草圖的設(shè)計(jì)。一個(gè)優(yōu)秀的檔案可以類比為框與線,通過(guò)它創(chuàng)建系統(tǒng)圖的多種草圖。這些元素是設(shè)計(jì)師與評(píng)估者都能夠理解的內(nèi)容,它讓快速地開(kāi)發(fā)草圖變得更簡(jiǎn)單。
實(shí)際上,著手進(jìn)行API草圖設(shè)計(jì)過(guò)程有一種好方法,就是定義接口中最明顯的單詞列表。有哪些單詞是用戶必須知道的?哪些單詞能夠最好地表達(dá)你的目標(biāo)受眾的目的與任務(wù)?通過(guò)回答這些問(wèn)題,并創(chuàng)建一份接口的詞匯表,將有助于你形成對(duì)該接口的一種早期草圖。
檔案的美妙之處在于,它為我們提供了一種正規(guī)化的方式以共享及重用這種類型的信息。舉例來(lái)說(shuō),我們?cè)陂_(kāi)始設(shè)計(jì)時(shí)可能會(huì)從某個(gè)XML結(jié)構(gòu)文檔中提取出單詞、從schema.org獲取一份詞匯表、或者從某個(gè)ALPS或RDF文檔獲取信息,這取決于我們的需求。
設(shè)計(jì)階段的目標(biāo)并非創(chuàng)建一份全面的詞匯表,恰恰相反,早期的詞匯表只是一個(gè)起點(diǎn),我們可以從這一點(diǎn)開(kāi)始繪制出其它類型的細(xì)節(jié)。我們可能會(huì)發(fā)現(xiàn)一個(gè)由20個(gè)左右的單詞組成的列表就能夠捕獲接口的本質(zhì),這個(gè)列表就可以作為我們的起點(diǎn)。
這份詞匯表為我們提供了一個(gè)基礎(chǔ),我們可以從它出發(fā)為API中的資源與關(guān)聯(lián)設(shè)計(jì)草圖,內(nèi)容可以包括URI、資源名稱、資源間的關(guān)聯(lián)、鏈接文本以及其它結(jié)構(gòu)化以及導(dǎo)航元素。請(qǐng)?jiān)俅巫⒁?#xff0c;沒(méi)有必要畫(huà)出草圖的所有細(xì)節(jié),我們的目標(biāo)是表達(dá)出API里最重要的部分。
最重要的一點(diǎn)在于,最初的草圖無(wú)需過(guò)于深入。比方說(shuō),請(qǐng)盡量避免在這一階段就深入到錯(cuò)誤流的建模,或響應(yīng)消息元素的設(shè)計(jì)。這些部分可以稍后再加入,或者可以為它們進(jìn)行專門(mén)的草圖設(shè)計(jì)。
一份單獨(dú)的草圖無(wú)需反映出整個(gè)接口,實(shí)際上,為某些細(xì)節(jié)部分專門(mén)設(shè)計(jì)草圖的方式可能更實(shí)用。舉例來(lái)說(shuō),我們可以設(shè)計(jì)一個(gè)基本錯(cuò)誤流的草圖,它與整個(gè)API都具有相關(guān)性,或是設(shè)計(jì)一種響應(yīng)消息格式的草圖,這種格式可以應(yīng)用到所有響應(yīng)中。之后,在原型設(shè)計(jì)階段,我們可以將這些思想應(yīng)用到某個(gè)工作模型中。
原型設(shè)計(jì)
在原型設(shè)計(jì)階段,我們將有機(jī)會(huì)為接口設(shè)計(jì)一個(gè)具有更高保真度的模型,并且對(duì)草圖設(shè)計(jì)階段產(chǎn)生的一些假設(shè)進(jìn)行驗(yàn)證。一個(gè)優(yōu)秀的API原型應(yīng)當(dāng)是可以調(diào)用的,它應(yīng)當(dāng)能夠處理真實(shí)的請(qǐng)求消息,并在必要時(shí)提供響應(yīng)。開(kāi)發(fā)者甚至應(yīng)該能夠通過(guò)使用這個(gè)原型API,創(chuàng)建出一個(gè)簡(jiǎn)單的應(yīng)用。
不過(guò),創(chuàng)建原型的成本應(yīng)當(dāng)?shù)陀谝粋€(gè)完整的實(shí)現(xiàn)。有一種方法可以保持較低的成本,即模擬響應(yīng)的消息,而不是由后臺(tái)系統(tǒng)輸出真實(shí)的響應(yīng)消息。這種方式有時(shí)也稱為接口的虛構(gòu)(mocking),它是一種建立快速原型的好方法。
無(wú)論使用哪種方法建立原型,要點(diǎn)在于為投入找到一個(gè)合適的范圍,能夠支持后續(xù)的迭代。我們應(yīng)當(dāng)能夠基于草圖創(chuàng)建出兩至三個(gè)不同的原形,并在過(guò)程中持續(xù)地學(xué)習(xí)。根據(jù)我們?cè)谠驮O(shè)計(jì)階段所學(xué)的內(nèi)容,我們甚至可能會(huì)返回草圖設(shè)計(jì)階段,并嘗試全新的方向。
通過(guò)原型,你的團(tuán)隊(duì)將有機(jī)會(huì)獲得對(duì)于設(shè)計(jì)的早期用戶反饋,并且能夠?qū)φ鎸?shí)的使用情況進(jìn)行觀察。如果該接口的保真度已經(jīng)達(dá)到了一定程度,你就可以讓潛在的用戶創(chuàng)建應(yīng)用,并且對(duì)他們?cè)趯?shí)現(xiàn)階段所面臨的挑戰(zhàn)進(jìn)行觀察。
負(fù)責(zé)實(shí)現(xiàn)的成員也應(yīng)當(dāng)加入原形評(píng)估過(guò)程中。一個(gè)經(jīng)過(guò)良好設(shè)計(jì)的API不僅應(yīng)當(dāng)易于使用,同時(shí)還是可持續(xù)的、可靠的、高性能的、并且是歷時(shí)長(zhǎng)久的。雖然接口本身不應(yīng)暴露數(shù)據(jù)模型的內(nèi)部細(xì)節(jié)與服務(wù)器的架構(gòu),但負(fù)責(zé)實(shí)現(xiàn)者為告訴設(shè)計(jì)團(tuán)隊(duì)所做的決定提供一些參考建議,例如運(yùn)行環(huán)境的限制,以及實(shí)現(xiàn)的成本。
設(shè)計(jì)周期好比一個(gè)科學(xué)工藝流程,而你應(yīng)當(dāng)抓住原型階段的這次機(jī)會(huì),在提出變更還為時(shí)未晚時(shí)對(duì)所做的假設(shè)進(jìn)行驗(yàn)證。
實(shí)現(xiàn)
實(shí)現(xiàn)者的任務(wù)是將一個(gè)原型化的接口轉(zhuǎn)變成一種可以放心地進(jìn)行實(shí)際應(yīng)用的產(chǎn)品。交付一個(gè)安全的、可靠的、以及可伸縮的實(shí)現(xiàn)是一個(gè)很大的挑戰(zhàn),這一過(guò)程本身也需要經(jīng)歷一種專門(mén)的設(shè)計(jì)流程。
最后的原型以及支持性的草圖描述了接口應(yīng)該表現(xiàn)出的樣子,它們反映出了所有的設(shè)計(jì)決策,并形成了一份規(guī)格,說(shuō)明了具體需要?jiǎng)?chuàng)建什么樣的產(chǎn)品。實(shí)際上,可以使用一種正式的接口描述語(yǔ)言(或稱IDL),從原型階段自然地過(guò)渡到實(shí)現(xiàn)階段。
舉例來(lái)說(shuō),如果你對(duì)原型API感到滿意,就可以選擇以一種API Blueprint文檔(或Swagger、RAML、WADL,又或者是其它任何一種最適合你工作環(huán)境的格式)對(duì)其進(jìn)行描述。
雖然這一階段的目標(biāo)是實(shí)現(xiàn),但也不應(yīng)停下設(shè)計(jì)的腳步。這一階段是一個(gè)良機(jī),讓你通過(guò)真實(shí)的使用數(shù)據(jù)對(duì)整個(gè)設(shè)計(jì)過(guò)程中所做的假設(shè)進(jìn)行進(jìn)一步的驗(yàn)證。就像原型化的API允許我們觀察使用情況一樣,實(shí)現(xiàn)后的API允許我們?cè)谝粋€(gè)宏觀層面對(duì)使用情況進(jìn)行分析。
打個(gè)比方,你或許想對(duì)你之前所做的設(shè)計(jì)假設(shè)進(jìn)行驗(yàn)證。應(yīng)用程序的開(kāi)發(fā)者是否真的在使用你為他們所創(chuàng)建的便利的操作?你是否吸引到你所期望的用戶類型?新的用戶是否在使用接口中的某些部分時(shí)遇到了麻煩?
經(jīng)過(guò)分析,你可能會(huì)重新開(kāi)始一次草圖設(shè)計(jì)過(guò)程,以準(zhǔn)備經(jīng)過(guò)進(jìn)一步改進(jìn)的接口。
通過(guò)工具實(shí)現(xiàn)過(guò)程的自動(dòng)化
工具與技術(shù)的使用會(huì)極大地改進(jìn)整個(gè)設(shè)計(jì)過(guò)程。那些能夠降低草圖與原型創(chuàng)建成本的工具能夠讓設(shè)計(jì)團(tuán)隊(duì)在更短的時(shí)間內(nèi)創(chuàng)建更多的細(xì)節(jié),使設(shè)計(jì)的決策得到改進(jìn)。
對(duì)于多數(shù)設(shè)計(jì)過(guò)程來(lái)說(shuō),工具與自動(dòng)化的引入是一個(gè)重要的部分。在建筑設(shè)計(jì)的世界中,SHoP(一個(gè)位于紐約的建筑師事務(wù)所)就通過(guò)創(chuàng)新、合作與基于工具的設(shè)計(jì)獲得了成功。他們的流程中就引入了原型工具,讓設(shè)計(jì)師能夠體現(xiàn)出所用材料的物理特性。這種方法讓他們得以創(chuàng)建數(shù)以千計(jì)的設(shè)計(jì)迭代,在每次迭代中都能夠體現(xiàn)出易于評(píng)估的實(shí)現(xiàn)細(xì)節(jié)。
在API設(shè)計(jì)的世界中,這種基于工具的優(yōu)化有很好的表現(xiàn)機(jī)會(huì)。實(shí)際上,在服務(wù)描述領(lǐng)域中,已經(jīng)出現(xiàn)了一些卓越的Web API設(shè)計(jì)工具。
接口描述語(yǔ)言也能夠提供支持性的工具,以簡(jiǎn)化編寫(xiě)描述的任務(wù),這一點(diǎn)現(xiàn)在已經(jīng)很常見(jiàn)了。這些編輯器工具能夠縮短基于IDL的設(shè)計(jì)的創(chuàng)建時(shí)間,因此在更短的時(shí)間內(nèi)創(chuàng)建更多的描述也變得更容易了。Swagger、RAML與Blueprint都提供了優(yōu)秀的編輯工具以支持各自的語(yǔ)言。即使像WADL這樣僅作為規(guī)范發(fā)布的IDL,也能夠從SoapUI這樣的工具中受益。
Apiary為Blueprint語(yǔ)言所提供的編輯器有很強(qiáng)的競(jìng)爭(zhēng)力,因?yàn)樗峁┝艘惶淄暾墓ぷ髁鞴ぞ咭灾С衷O(shè)計(jì)過(guò)程。只要以Blueprint編寫(xiě)一個(gè)簡(jiǎn)單的API描述,設(shè)計(jì)師就能夠?qū)ξ臋n進(jìn)行評(píng)估、調(diào)用原型,甚至對(duì)調(diào)用過(guò)程進(jìn)行分析。
(單擊圖片以放大)
不過(guò),這些現(xiàn)有的工具中的大部分都只限于其所支持的描述語(yǔ)言。設(shè)計(jì)者必須理解IDL的語(yǔ)法,并且用這種語(yǔ)言設(shè)計(jì)界面。雖然這種設(shè)計(jì)風(fēng)格能夠吸引熟悉編程語(yǔ)言的使用者,但也會(huì)限制在早期的草圖設(shè)計(jì)階段很有價(jià)值的抽象與實(shí)驗(yàn)性的思考方式。
由于IDL及其對(duì)應(yīng)工具的這些特征,它們很適用于原型設(shè)計(jì)過(guò)程,但對(duì)于草圖設(shè)計(jì)的早期實(shí)驗(yàn)性活動(dòng)來(lái)說(shuō)實(shí)用性不高。
使用可視化工具進(jìn)行草圖設(shè)計(jì)
人們對(duì)于使用可視化工具幫助他們進(jìn)行API設(shè)計(jì)的興趣正在不斷升溫。這些工具并非直接支持編輯IDL的行為,而是讓設(shè)計(jì)者能夠隨意擺弄接口的一個(gè)可視化展現(xiàn)。
可視的建模工具提供了一種接口描述語(yǔ)言,這種語(yǔ)言多數(shù)是關(guān)于繪畫(huà)的,或是基于圖形的。雖然這個(gè)視角限制了接口展現(xiàn)的準(zhǔn)確度,但它也讓設(shè)計(jì)者能夠在一個(gè)較高層次看到這個(gè)接口的全貌。這一點(diǎn)帶來(lái)了進(jìn)行改進(jìn)的機(jī)會(huì),而這種機(jī)會(huì)在手寫(xiě)的形式中往往并不明顯。
易于使用的可視化編輯器也是進(jìn)行自動(dòng)化草圖設(shè)計(jì)的良好選擇,它綜合了低保真度、抽象的展現(xiàn)以及可棄性等特征,這正是我們所需的。
我參與開(kāi)發(fā)了一個(gè)名為Rápido!的可視化建模工具,用于輔助API的草圖設(shè)計(jì)。Rápido將用戶限制在一個(gè)低保真度的細(xì)節(jié)中,這一點(diǎn)并非它的副作用,而是本身就是如此設(shè)計(jì)的。用戶可以使用它進(jìn)行檔案、導(dǎo)航元素以及響應(yīng)數(shù)據(jù)的建模,但不能用于設(shè)計(jì)邏輯流程或動(dòng)態(tài)的響應(yīng)。
當(dāng)設(shè)計(jì)者開(kāi)始創(chuàng)建一個(gè)新的Rápido項(xiàng)目時(shí),他們需要為API設(shè)計(jì)一個(gè)詞匯表。在得到一個(gè)初始的單詞列表(或者從外部導(dǎo)入一個(gè)ALPS詞匯表)之后,設(shè)計(jì)師就可以在一個(gè)超媒體畫(huà)布中開(kāi)始為API設(shè)計(jì)概念模型、創(chuàng)建資源、嘗試URI名稱甚至是鏈接的狀態(tài)。
最終,設(shè)計(jì)者可以為草圖中的每個(gè)資源或狀態(tài)實(shí)現(xiàn)靜態(tài)的響應(yīng)消息,以增加保真度。最后,當(dāng)草圖設(shè)計(jì)階段結(jié)束后,可以將整個(gè)設(shè)計(jì)導(dǎo)出成IDL格式,準(zhǔn)備在原型階段導(dǎo)入高保真度的工具。
Rápido的目標(biāo)是在Web API設(shè)計(jì)的領(lǐng)域中提供一種快速繪制的“雞尾酒餐巾”式的草圖的體驗(yàn)。如果你選擇了適當(dāng)?shù)谋U娑?#xff0c;并且沒(méi)有施加過(guò)于強(qiáng)烈的限制,那么它就能夠成為API設(shè)計(jì)工具鏈中的重要一環(huán)。
在迭代過(guò)程中取得成功
如果你按照本文中所描述的方式進(jìn)行迭代式風(fēng)格的設(shè)計(jì),那么你將為團(tuán)隊(duì)帶來(lái)一個(gè)設(shè)計(jì)高效API的良機(jī)。在過(guò)程的一開(kāi)始創(chuàng)建多個(gè)低保真度的設(shè)計(jì)并進(jìn)行評(píng)估,以培育實(shí)驗(yàn)?zāi)芰εc構(gòu)思能力。然后創(chuàng)建高保真度的原型以及虛擬的實(shí)現(xiàn),以評(píng)估早期的設(shè)計(jì)思想。最后,為真實(shí)用戶實(shí)現(xiàn)整個(gè)設(shè)計(jì),并獲取數(shù)據(jù)以分析實(shí)際應(yīng)用中的使用情況。
迭代式設(shè)計(jì)過(guò)程的特定細(xì)節(jié)取決于你的環(huán)境與項(xiàng)目,需要多少細(xì)節(jié)、多少次迭代、以及需要哪些評(píng)估技術(shù),這些問(wèn)題將留給設(shè)計(jì)者進(jìn)行回答。但作為一種通用的經(jīng)驗(yàn)法則,隨著你的設(shè)計(jì)過(guò)程的推移,迭代的數(shù)量應(yīng)當(dāng)逐步減少,而在評(píng)估方面需要投入更多的精力。
優(yōu)秀的API設(shè)計(jì)過(guò)程為你提供了一個(gè)創(chuàng)建最佳的接口的機(jī)會(huì)。但創(chuàng)建優(yōu)秀API的秘密并不在于專家的指導(dǎo)或什么神秘的知識(shí),而是一種通過(guò)優(yōu)秀的工具、語(yǔ)言以及檔案所優(yōu)化的迭代流程的應(yīng)用而實(shí)現(xiàn)的。使用這個(gè)公式所交付的API定能幫助你的組織獲得成功。
總結(jié)
以上是生活随笔為你收集整理的从涂鸦到发布 —— 理解API的设计过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 致创业者:APP已死 服务永生
- 下一篇: Kubernetes初步了解及入门