最近在做一些app,前后端分離的開發(fā)模式是必須的。一直用的python flask做后端的快速POC,python本身就是一門膠水語言,開發(fā)起來方便快捷,而flask又是一個極簡的webserver框架(比Django簡潔)。但在這里推薦的是使用Postman,避免同時打開pycharm和webstorm,同時對于不懂python的同學(xué)也是福音。
在整個開發(fā)過程中,前端或后端的延遲可能會阻礙相關(guān)團(tuán)隊有效地完成工作。一些后端的API工程師已經(jīng)開始使用Postman去測試后端endpoint,而不依賴于前端UI來模擬API請求。
現(xiàn)在,Postman開發(fā)了一種新的模擬服務(wù),使團(tuán)隊能夠模擬后端服務(wù)器。前端開發(fā)人員可以模擬Postman collection(和相應(yīng)的環(huán)境)中的每個endpoint,以查看潛在的響應(yīng),而無需實際啟動后端。
前端,后端和API團(tuán)隊現(xiàn)在可以并行工作,從而釋放之前因這些依賴性而延遲的開發(fā)人員。現(xiàn)在,讓我們看看Postman是如何模擬后端的。
01
設(shè)置一個用于模擬的集合
這里,前端開發(fā)得先知道有哪些url是用于和后端通信的。
在這個例子中,我們有一個?Tesk Mock?的集合,并且配置了同名的環(huán)境的Tesk Mock?。集合中,有兩個request:mock_r_1?和?mock_r_2,一個GET,一個POST,對應(yīng)的path分別是/test,/tp。
接下來,讓我們設(shè)置一個 mock server 并且為每一個endpoint模擬一條response。
注意:這兩個是必須的步驟,沒有必然的先后順序。你可以先mock response,再創(chuàng)建mock server,也可以先創(chuàng)建mock server,再mock response。這里,我們先創(chuàng)建一個mock server。
02
創(chuàng)建mock server
進(jìn)入左邊的導(dǎo)航欄,選擇我們的Test mock集合,會出現(xiàn)一個三角符號(如下圖中Postman Echo集合旁邊的符號),點(diǎn)擊之后,三角符號會反向(如下圖中Test mock集合旁邊的符號),并且出現(xiàn)針對該集合的配置。這里有一個Mocks,請選擇之:
接下來的步驟很簡單,一路點(diǎn)擊創(chuàng)建即可:
最后一個步驟,我們得到了一個mock server的地址,也就是說,這個mock server是postman在自己的服務(wù)器上為我們創(chuàng)建的,無論我們是否打開postman,我們都可以直接用這個地址來訪問mock的API。
別擔(dān)心你會忘掉這個地址,因為它會自動保存在collection的配置中,按照我們剛才是的步驟,回到這個集合中,在Mocks下面,你會看到你創(chuàng)建的server:
點(diǎn)擊圖中的圖標(biāo),會直接復(fù)制到粘貼板上。然后你可以將其保存在Tesk mock環(huán)境的變量中。也可以直接使用。
但這時,你擁有的只是一個mock server,上面沒有任何服務(wù)可用。你需要在這個server上注冊endpoint,并且mock對應(yīng)的response,才可以使之服務(wù)于你。
03
mock每個endpoint的response
這里的步驟也不復(fù)雜,針對每個endpoint,或者說是host下面的path,你需要自己提供mock data。在postman里面,這個概念叫做example,即每一個你需要訪問的路徑/接口/資源,都可以提供一個栗子,即便你連不上,你也可以通過例子知道該路徑/接口/資源大概會返回什么樣的response。這個example不單單是為了mock而做的,因為postman可以生成API文檔,在生成文檔的時候,這個例子也會直接放在文檔里,方便查閱文檔的人了解接口。
具體創(chuàng)建步驟:
打開collection,選擇request,為request創(chuàng)建一個example,保存example
這里需要注意的是:
每個request都可以有多個example
每個example創(chuàng)建之后都可以修改
Mock server只會采用最后創(chuàng)建的example
04
使用mock server
在前面的步驟中,我們已經(jīng)創(chuàng)建了mock server,并且為每個end point至少創(chuàng)建了一個example。這時,mock server就不再只是一個空殼了,它會為每一創(chuàng)建了example的endpoint提供mock服務(wù),mock的內(nèi)容就是最后創(chuàng)建的example的內(nèi)容。
我們可以直接在postman上測試:
也可直接在瀏覽器上驗證:
注意:在驗證第二個endpoint的時候,失敗的原因是,endpoint是POST權(quán)限的,但瀏覽器默認(rèn)是用GET去訪問。
05
對開發(fā)模式的啟發(fā)
使用postman,前端團(tuán)隊和后端團(tuán)隊完全可以在約定了API接口之后,各自完成開發(fā),而不需要收到對方進(jìn)度的影響,因此在真正開始開發(fā)工作之前,接口、數(shù)據(jù)格式的約定變得尤為重要,當(dāng)然,因為postman是支持組開發(fā)的,即便接口,數(shù)據(jù)有變化,也可通過share collection的方式,及時同步collection下request的變化,并立即反應(yīng)到mock server上。并且,因為mock server是掛載postman的服務(wù)器上,只要有網(wǎng)絡(luò),前端是可以在家辦公,而不用受制于內(nèi)網(wǎng)限制的。