iT邦幫忙

6

Week7 - 一個好的後端RD,一定需要好的API client工具 - API client小撇步大集合篇 [Server的終局之戰系列]

後端胖虎:我的API設計好了喔,參數有A、B、C,你搭配好就可以讓前端APP與後台溝通了!

前端APP小夫:OK!沒問題

(30分鐘後...)

前端APP小夫:欸我試了30分鐘還是打不了這個API啊

後端胖虎:好ㄅ,不然我貼code給你,你用這個code打

(貼上javascript的code)

(胖虎後來花了10分鐘慢慢聽小夫描述Swift code,後來才發現是原來query帶到body去,終於解決惹。゚(゚ノД`゚)゚。)


大家是否有這樣的經驗呢,導致溝通的時間比實作的時間多了不知道多少倍,我是碰到了很多次,後來就想,是不是有方法可以避免這樣的事情?

當然,我們可以透過swagger, apiDoc這樣的文檔來在整合開發前溝通好,並且透過這些文檔產生code,不過我們也可以夠過Postman等等API client來產生code喔!

這裡就來分享我用過的這些API client的一些經驗,也歡迎大家分享我沒發現到的功能。

Postman - 大家的初戀

我相信從用過後端的人一定都聽過Postman,他擁有龐大的功能,導致有些功能我們常常沒發現,這裡分享幾個我認為很不錯的功能

  1. 產生不同語言的code

    點選右邊的code按鈕

    就可以選擇不同的code了~

  2. 自動測試後端API

    在寫完API後,其實往往不是針對一個API進行測試,而是一連串API的整合測試,這時候我們常常會點A API再點B API再點C API,這其實有點重工,而其實Postman可以幫助我們解決這件事情

    點選左上角的Runner

    選擇要測試的API,並且還能選擇delay等等細項,就可以開測啦~

  3. 用cURL來匯入API

    不同的後端人員,需要分享API端點的時候,最快速的方法就是使用cURL,這是個攜帶性很強的純文字API格式,而Postman也支援匯入cURL的功能

    點選左上角的Import

    貼上cURL就可以匯入了~

Insomnia - 或許可以來個簡潔點的

Postman的功能真的很多,但常常我們要的功能很單純,是不是有個工具能簡單達到我們的需求,那你或許可以來點Insomnia

  1. 產生不同語言的code

    在API旁點選右鍵 > Generate Code

    複製起來!

  2. 用cURL來匯入API

    貼在網誌列,沒了XD
    沒錯!就是這麼的簡單

  3. 優越的環境變數功能

    在不同的環境上我們都會有不同的變數,比如說production與devlopment環境的網址就不同,我以前常常手動改,但改著改著就會不小心貼錯,結果debug了30分鐘才發現根本是在測不同的世界ヽ(´□`。)ノ,而Insomnia就有切換環境變數的功能,坦白說Postman與其他要介紹的工具都是有的,但Insomnia真的設計得很「漸進式」,常常不知不覺就被他提醒了「嘿!我可以這樣用喔」

    點選Manage Environments

    裡頭是以JSON格式來儲存,並且Base Environments是每個環境共用的變數,而Sub Environments是個別環境的變數,可以依照這兩個變數來進行設計,很方便

    除此之外Insomnia也可以依照其他API的Response來複製參數,像是我們很常要透過token API來取得token並且發送到其他API,那我們就可以使用此功能

    在任意處點選空白,就會跳出選項,我們選擇Response -> Raw Body

    選擇玩API之後透過JSONPath來選擇哪個key

    可以動態改token囉~

VSCode rest client - 讓我們一切反璞歸真

而VSCode其實也有這類工具,而且都可以達到以上功能,並且我覺得最方便的是,VSCode是用文字檔來描述這些測試的,這代表「我們可以很輕鬆達到git功能」,雖然其他工具也有同步功能,但可以上git實在是很吸引我,這讓我最後選擇了rest client,因為可以透過git來同步這些API測試實在太方便了~

我直接貼上官網的使用方法給大家看看,可以發現到他可以透過{{var}}來調整這些環境變數,真心方便

Postwoman - 十項全能的女人

如果你有websocket、MQTT、socket.io、SSE等測試需求的話,你也可以選擇這款Postwoman,他是完全基於browser的測試tool,支援多種協定。

但稍微尷尬的是,因為他基於browser,所以他會受到cors的影響,我們不得不用一個反向代理來解決這件事,幸虧官方有提供代理工具與他們提供的代理伺服器。


小結論

介紹了這麼多工具,一定會有疏漏的地方,歡迎大家在下方補充使用的小撇步,而我最後是因為非常喜歡版控這些測試文件,所以選擇了VSCode rest client。

謝謝你的閱讀,也歡迎大家分享自己喜歡的工具~


尚未有邦友留言

立即登入留言