自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

簡單的Postman,還能玩出花?

開發(fā) 開發(fā)工具
Postman是一款我們在工作中使用頻率非常高的API調(diào)試工具,估計很多童鞋在使用它時也比較粗暴,填好接口地址、參數(shù),直接send就完事了,估計大家要說了,這么簡單的東西還能玩出什么花來。

 [[415344]]

Postman是一款我們在工作中使用頻率非常高的API調(diào)試工具,估計很多童鞋在使用它時也比較粗暴,填好接口地址、參數(shù),直接send就完事了,估計大家要說了,這么簡單的東西還能玩出什么花來。今天就和大家安利幾個非常實用、但是可能一直被忽視的功能,用完之后,簡直不要太香!

環(huán)境變量

我們通過一個例子來看一下環(huán)境變量的用法,在一個項目的生命周期中,可能會有開發(fā)環(huán)境、測試環(huán)境、預上線環(huán)境、線上環(huán)境等眾多的不同環(huán)境,這時候就可以通過環(huán)境變量來管理接口的地址以及端口。

點擊左側(cè)的Environments,系統(tǒng)中默認已經(jīng)存在了一個Globals的全局環(huán)境,在這里可以存放一些通用的公共變量的值。先在這里寫入host和port信息:

在需要使用變量時,可以在訪問接口時使用雙大括號包裹變量,以{{variable}}的方式進行引用:

除了默認的全局環(huán)境外,也可以自己創(chuàng)建新的環(huán)境來存放變量。在下面的例子中,創(chuàng)建了local和test兩個環(huán)境,這樣我們可以直接在兩個環(huán)境間進行切換激活,簡化了開發(fā)中測試接口的過程,不再需要頻繁的改動接口的地址。

如果激活的環(huán)境和全局環(huán)境中有名稱重復的變量,那么當前激活的環(huán)境中的變量具有更高的優(yōu)先級,它會直接覆蓋globals環(huán)境中變量的值:

在上面,我們將環(huán)境變量分為了兩類,普通環(huán)境變量和全局變量??偟膩碚f,全局變量具有更高的使用范圍,即使切換到自己創(chuàng)建的環(huán)境,全局變量仍然可用。但是我們自己創(chuàng)建的環(huán)境之間是相互隔離的,如果切換到一個環(huán)境,那么其他環(huán)境中的變量將不再可用。

像上面這樣手動寫入變量的值,在某些時候可能不太方便滿足一些需求,因此postman提供了一種方法,允許使用腳本來改變環(huán)境變量的值。我們來看一下發(fā)送請求中的Pre-request Script和Tests模塊,它們是在請求發(fā)送前或完成后執(zhí)行的腳本,具體的使用在后面具體介紹,現(xiàn)在我們只需要知道能在這里執(zhí)行js代碼就可以了。

下面,在Pre-request Script中加入兩行js代碼:

  1. pm.globals.set("key1","value1"); 
  2. pm.environment.set("key2","value2"); 

執(zhí)行完成請求后再次查看環(huán)境變量,全局環(huán)境和當前環(huán)境中都寫入了新的值:

同樣,也可以使用腳本刪除變量:

  1. pm.globals.unset("key1"); 
  2. pm.environment.unset("key2"); 

除了上面的兩類變量外,postman中的Collection也可以存儲變量。Collection可以理解為一個集合,通常在使用中我們會將一個應用系統(tǒng)中的接口放在一個集合中,集合中的變量擁有更小的使用范圍,僅在當前集合內(nèi)可用:

同樣,也可以在腳本中對它進行操作:

  1. pm.collectionVariables.set("key3","value3"); 
  2. pm.collectionVariables.unset("key3"); 

在有了環(huán)境變量的基礎后,再回頭看一下上面提到的Pre-request Script和Tests,它們是兩個比較類似的功能,用處也非常廣泛。

Pre-request Script

運行js腳本

Pre-request Script可以翻譯為預請求腳本,是在請求發(fā)送前被執(zhí)行的代碼邏輯,可以在這里執(zhí)行一些js代碼。通過下面的簡單例子進行一下演示,先準備一個后臺接口,將前端傳遞過來的時間戳轉(zhuǎn)換為時間并打?。?/p>

  1. @GetMapping("test1"
  2. public void time(@RequestParam("time") String time){ 
  3.     Date date = new Date(Long.parseLong(time)); 
  4.     System.out.println(date); 

在Pre-request Script中利用js代碼獲取當前時間,并放到集合變量中,在請求中傳給后端:

發(fā)送請求,控制臺打印了前端接口的調(diào)用時間:

  1. Tue Aug 01 14:14:29 CST 2021 

發(fā)送get請求

Pre-request Script的另一大用途就是,在請求當前接口前,通過執(zhí)行腳本來先請求一下其他接口。在postman中,已經(jīng)內(nèi)置了sendRequest方法來發(fā)送get方法請求。我們在這里調(diào)用一個本地接口,并將信息打印到console控制臺(可以通過 Show Postman Console開啟)。

通過控制臺的打印順序,也可以看到,是在先執(zhí)行了Pre-request中的請求后,才去執(zhí)行的真正目標接口的請求。直接像上面這樣調(diào)用sendRequest時,默認發(fā)送的get的請求,如果需要使用post請求、配置請求header或使用json傳參的話,可以使用下面單獨封裝請求的方式。

發(fā)送post請求

在這里,我們通過一個例子來演示Pre-request Script在具體的工作中能夠怎樣應用。有一個很普遍的場景,通常在調(diào)試需要權(quán)限認證的接口時,需要提前通過一個接口獲取token,然后再訪問目標接口時攜帶這個token。

這時就可以在Pre-request Script中先調(diào)用獲取token的接口,再將token設置到集合的環(huán)境變量中,在之后的接口調(diào)用中引用它。在這里先準備了一個應用了Shiro+JWT的項目,其中通過登錄接口獲取token,之后的其他接口都需要帶上這個token用于認證 。

我們在sendRequest發(fā)送get請求的基礎上,進行一些修改。首先定義一個變量,在其中使用url指定請求地址,method指定請求方法,body攜帶參數(shù),最后使用sendRequest進行請求的發(fā)送。

在獲取完成token后,通過下面的代碼將獲取的token放入了Collection的變量中:

  1. pm.collectionVariables.set("TOKEN",response.json().data.token); 

查看Collection中的變量,已經(jīng)保存了剛才獲取的token:

在需要認證的接口header中,引用這個token,就可以正常的調(diào)用接口了:

在上面的例子中,我們使用的是urlencoded的表單傳參方式,如果接口定義是使用json方式傳參,可以寫成下面的格式:

  1. body: { 
  2.   mode: 'raw'
  3.   raw: JSON.stringify({ key'value' }) 

如果需要傳遞header請求頭信息,也可以在自定義的請求中添加:

  1. const loginRequest = { 
  2.   url: '...'
  3.   header: [ 
  4.       'Key1 : Value1'
  5.       'Key2 : Value2' 
  6.   ], 
  7.   ... 
  8. }; 

具體的使用中需要添加什么字段非常的靈活,可以由我們自行進行配置。

Tests

和Pre-request Script相對,Tests是在請求完成后執(zhí)行的操作。這里我們回顧一下上面Pre-request Script中發(fā)送post請求的例子,其實可以通過Tests來進行改進。

因為在上面的例子中,獲取到的token是JWT生成的,具有一定有效時間,在一段時間內(nèi)是都可以復用的。因此我們可以先手動調(diào)用一次login接口獲取token,完成后在Tests中使用腳本將獲取的token放入Collection的變量中,就不需要在每次調(diào)用接口前都調(diào)用login接口重復獲取token了。

調(diào)用login接口并存入緩存的過程:

之后在調(diào)用其他需要攜帶這個token的接口時,使用{{TOKEN}}的方式,就會自動填充剛才保存的TOKEN值。這樣在獲取到新的token后,每個接口中的token都會自動更新,就不需要再手動復制到每個接口了,極大的減少了工作量。

在postman中,在Collection中可以創(chuàng)建Folder文件夾,并且集合和文件夾上也可以添加Pre-request Script和Tests腳本。我們來看一下位于Folder中的請求,在執(zhí)行Pre-request Script和Tests時順序是怎樣的,在每個環(huán)節(jié)中加入對應的打印語句,最后輸出的結(jié)果是這樣的:

也就是說,在發(fā)送請求前,postman會先執(zhí)行所有Pre-request Script,并且順序是集合最先、文件夾次之、最后是請求中的,在執(zhí)行完成真正的請求后執(zhí)行所有的Tests,順序同上。這也就要求我們在使用Pre-request Script及Tests功能前,首先要求我們對接口的調(diào)用順序、數(shù)據(jù)的流向有一個明確的了解,這樣才能保證不會出現(xiàn)取不到值或更新錯誤的情況。

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)參上」,可以通過以下二維碼關注。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)參上公眾號。

 

責任編輯:武曉燕 來源: 碼農(nóng)參上
相關推薦

2021-03-26 10:48:14

代碼語言提交

2021-12-14 10:54:31

TopK面試排序法

2024-06-11 09:52:39

2021-01-19 05:29:41

代碼Git 工作流

2021-06-11 06:45:32

SQL結(jié)構(gòu)化語言

2023-02-15 09:00:49

2019-11-26 14:11:52

互聯(lián)網(wǎng)裁員員工

2017-08-02 17:33:09

互聯(lián)網(wǎng)

2020-08-29 19:17:19

Linux文件列表排序

2020-05-28 10:23:57

5G網(wǎng)絡技術(shù)

2023-04-06 06:55:24

ChatGPTGPT算力

2021-12-13 08:52:42

Go 泛型

2021-10-11 08:21:23

@Valuespringspring框架

2022-02-15 14:08:32

虛擬機Wasm瀏覽器

2018-04-20 14:35:18

電費電腦收益

2020-03-26 14:35:42

編程語言PythonJava

2022-10-15 07:49:18

代碼虛擬線程

2021-10-25 09:13:07

前端開發(fā)技術(shù)

2025-04-21 09:31:29

2021-04-15 09:18:22

單例餓漢式枚舉
點贊
收藏

51CTO技術(shù)棧公眾號