Postman工具的使用(基礎(chǔ)篇)

原文:https://www.toutiao.com/i6913538714060800515/

postman是一款支持http協(xié)議的接口調(diào)試與測試工具限书,其主要特點就是功能強大,使用簡單且易用性好 。無論是開發(fā)人員進行接口調(diào)試,還是測試人員做接口測試浇垦,postman都是我們的首選工具之一 。那么接下來就介紹下postman到底有哪些功能高蜂,它們分別都能干些什么 椎眯。下面先通過一張圖來直觀地來看下postman中所包含的功能 。

當(dāng)然再姑,以上功能也只是展示了postman的一部分功能萌抵,為了能更加全面的體現(xiàn)這款工具的特點,我將從以下三個維度來加以說明元镀。它們分別是:

  • 基礎(chǔ)功能

  • 常見類型的接口請求

  • 接口響應(yīng)數(shù)據(jù)的解析

  • 接口管理(Collection)

  • 批量執(zhí)行接口請求

  • 日志調(diào)試

  • 斷言

  • 變量

  • 請求前置腳本

  • 接口關(guān)聯(lián)

  • 常見的返回值獲取

  • 便捷功能

  • 快速填寫查詢參數(shù)

  • 快速填寫請求頭信息

  • 快速實現(xiàn)添加一個請求

  • 如何繼承集合認證

  • 批量斷言

  • 快速查詢和替換

  • 高級功能

  • 讀取文件進行參數(shù)化

  • 生成測試報告

  • 代碼中發(fā)送請求

  • 編寫接口文檔

  • mock服務(wù)

  • 監(jiān)控

  • 使用工作空間

  • 代碼同步與分支管理

  • 連接數(shù)據(jù)庫

  • apis

一.postman安裝說明

postman在2018年之后就不再支持瀏覽器版本绍填,所以,想要使用它就必須先下載客戶端再安裝使用栖疑,下面就以Windows系統(tǒng)為例進行安裝 讨永。

1.下載與安裝

postman安裝步驟:

  1. 訪問postman官方網(wǎng)站,下載最新版本遇革,訪問地址:https://www.getpostman.com/
  2. 進入到下載頁面卿闹,根據(jù)自己電腦下載對應(yīng)的版本
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)
  1. 雙擊下載的安裝包,進入到安裝界面萝快,直到用戶登錄和注冊界面锻霎。
  • 若個人使用,選擇跳過即可揪漩,這時會進入到postman主界面旋恼,至此postman安裝成功(下圖)。

  • 若團隊使用奄容,可以進行注冊冰更,注冊后使用賬號可以加入團隊工作區(qū)

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

2.界面導(dǎo)航說明

初次使用postman的朋友可能對界面上的一些元素不太熟悉,下面就通過一張圖來說明這些元素的含義 昂勒。

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

3.發(fā)送第一個請求

如果你是第一次使用postman發(fā)送請求蜀细,下面這個例子可以作為一個最基本的入門,可以幫我們建立一個初始印象 戈盈。

  1. 打開postman审葬,點擊+加號打開一個新的請求頁。
  2. 在請求的URL中輸入請求地址:http://www.weather.com.cn/data/sk/101010100.html
  3. 點擊Send按鈕奕谭,這時就可以在下部的窗格中看到來自服務(wù)器的json響應(yīng)數(shù)據(jù)涣觉。

二.postman基礎(chǔ)功能

1.常見類型的接口請求

常見的接口有如下四種類型,分別是含有查詢參數(shù)的接口血柳,表單類型的接口官册,json類型的接口以及含有上傳文件的接口,以下就對這四種類型接口及如何在postman中請求進行說明 难捌。

1.1 .查詢參數(shù)的接口請求

什么是查詢參數(shù)?

所謂的查詢參數(shù)膝宁,其實就是URL地址中問號(?)后面的部分就叫查詢參數(shù)鸦难,比如:http://cx.shouji.#/phonearea.php?number=13012345678 。在這個接口中员淫,查詢參數(shù)就是:number=13012345678 合蔽。而這一部分是由有鍵值對組成,格式為:key1=value1&key2=value2, 如果有多組鍵值對介返,要用&隔開 拴事。

postman如何請求

在postman中實現(xiàn)對這類接口請求非常簡單,一般就需要明確倆個參數(shù)即可圣蝎,一個是請求方法刃宵,一個請求地址。

針對上面的那個接口徘公,地址已經(jīng)給出 牲证,而它的請求方法是get 。那么在postman中只需要把這倆個參數(shù)填寫上即可請求 关面。

具體實現(xiàn)步驟:

  1. 打開postman坦袍,新建一個請求。
  2. 在請求方法中選擇請求方法:GET,因為在postman中默認的請求方法就是GET,所以這一步可以忽略
  3. 接口URL中輸入地址等太,點擊Send按鈕就可以發(fā)送請求了 键闺。
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

說明:查詢參數(shù)的URL一般直接拷貝到輸入的URL地址欄中就可以了,當(dāng)然也可以把查詢參數(shù)在Params中輸入澈驼,倆者的效果是一樣的 。

1.2 表單類型的接口請求

什么是表單 筛武?

我們都知道缝其,在發(fā)送HTTP請求的時候,一個請求中一般包含三個部分徘六,分別是請求行内边,請求頭,請求體 待锈。

不同的接口伤提,請求體的數(shù)據(jù)類型是不一樣的亲澡,比較常見的一種就是表單類型,那么什么是表單類型呢 ? 簡單理解就是在請求頭中查看Content-Type叹卷,它的值如果是:application/x-www-form-urlencoded .那么就說明客戶端提交的數(shù)據(jù)是以表單形式提交的 。見下圖

postman中如何請求惫确?

如果在postman請求上圖的接口鸭津,我們只需要填寫四個參數(shù),分別是(可以參考上圖):

實現(xiàn)步驟:

  1. 打開postman宽气,新建一個請求 随常。
  2. 在請求中設(shè)置以上四個參數(shù)潜沦,點擊Send按鈕。在postman中設(shè)置請求體類型為绪氛,需要選擇body-> x-www-form-urlencoded
  3. 查看響應(yīng)數(shù)據(jù)唆鸡。
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

1.3 上傳文件的表單請求

在做接口測試時,我們經(jīng)常會遇到需要上傳文件的接口枣察,比如微信的更新頭像争占。這就需要用到:multipart/form-data。它也屬于一種表單询件,但它既支持表單請求燃乍,也支持文件上傳。 它的請求報文中數(shù)據(jù)往往是下面這樣的宛琅。

POST http://localhost/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html HTTP/1.1
Content-Type: multipart/form-data

file=a1.jpg

這種類型的接口刻蟹,在postman中該如何請求呢 ? 我們先分析需要填寫的參數(shù) 嘿辟。

實現(xiàn)步驟:

  1. 打開postman舆瘪,新建一個請求 。
  2. 在請求中設(shè)置以上四個參數(shù)红伦,點擊Send按鈕英古。注意:在postman中設(shè)置請求體類型,需要選擇body-> form-data 昙读。file中要選擇File類型召调,然后上傳本地的文件 。
  3. 查看響應(yīng)數(shù)據(jù)蛮浑。
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

1.4 json類型的接口請求

這應(yīng)該是接口測試中最常見的一種情況了 唠叛, 也就是請求體類型為json,我們來看下這個請求報文 。

POST http://xxx/api/sys/login HTTP/1.1
Content-Type: application/json;charset=UTF-8

{"account":"root","password":"123456"}

根據(jù)以上報文沮稚,我們可以分析出艺沼,我們在postman只需要填寫四個參數(shù)即可,具體如下:

  • 請求方法:POST
  • 請求地址:http://xxx/api/sys/login
  • 請求體類型:json
  • 請求體數(shù)據(jù):{"account":"root","password":"123456"}

實現(xiàn)步驟:

  1. 打開postman蕴掏,新建一個請求 障般。
  2. 在請求中設(shè)置以上四個參數(shù),點擊Send按鈕盛杰。注意:在postman中設(shè)置請求體類型挽荡,需要選擇body-> raw -JSON
  3. 查看響應(yīng)數(shù)據(jù)。

2.接口響應(yīng)數(shù)據(jù)解析

響應(yīng)數(shù)據(jù)是發(fā)送請求后經(jīng)過服務(wù)器處理后返回的結(jié)果即供,響應(yīng)由三部分組成徐伐,分別是狀態(tài)行、響應(yīng)頭募狂、響應(yīng)體办素。我們來看下postman的響應(yīng)數(shù)據(jù)展示角雷。

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

在postman中的響應(yīng)數(shù)據(jù)展示:

  • 狀態(tài)行:Status:200 OK
  • 響應(yīng)頭:Headers + Cookies,需要注意的是Cookies是包含在響應(yīng)頭中的性穿,但是為了明顯勺三,工具會分開顯示
  • 響應(yīng)體:Body

那么這些數(shù)據(jù)對我們做接口測試有什么作用呢 ?

  • Body和Status是我們做接口測試的重點需曾,一般來說我們都會驗證響應(yīng)體中的數(shù)據(jù)和響應(yīng)狀態(tài)碼
  • Test Results 是我們編寫斷言后吗坚,可以查看斷言的執(zhí)行結(jié)果 ,所以這個對我們也很有用 呆万。
  • Time 和Size 是我們做性能測試時商源,可以根據(jù)這兩個參數(shù)來對所測接口的性能做一個簡單的判斷。

接下來我們再來關(guān)注下Body中的幾個顯示主題谋减,分別是:Pretty牡彻,Raw,Preview .

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

Pretty:翻譯成中文就是漂亮 出爹, 也就是說返回的Body數(shù)據(jù)在這個標(biāo)簽中查看 庄吼,都是經(jīng)過格式化的,格式化后的數(shù)據(jù)看起來更加直觀严就,所以postman默認展示的也是這個選項总寻。比如返回html頁面,它會經(jīng)過格式化成HTML格式后展示梢为,比如返回json渐行,那么也會格式化成json格式展示 。

Raw:翻譯成中文未經(jīng)過加工的铸董,也就是原始數(shù)據(jù) 祟印,原始數(shù)據(jù)一般都是本文格式的,未經(jīng)過格式化處理的袒炉,一般在抓包工具中都有這個選項 。

Preview:翻譯成中文就是預(yù)覽樊零,這個選項一般對返回HTML的頁面效果特別明顯我磁,如請求百度后返回結(jié)果,點擊這個選項后就直接能查看到的頁面 驻襟,如下圖 夺艰。同時這個選項和瀏覽器抓包中的Preview也是一樣的 。

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

3.接口管理(Collection)

當(dāng)我們對一個或多個系統(tǒng)中的很多用例進行維護時沉衣,首先想到的就是對用例進行分類管理郁副,同時還希望對這批用例做回歸測試 。在postman也提供了這樣一個功能豌习,就是Collection 存谎。通過這個Collection就可以滿足我們的上面說的需求拔疚。

先對Collection功能的使用場景做個簡單總結(jié) 。

  • 用例分類管理既荚,方便后期維護
  • 可以進行批量用例回歸測試 稚失。

那么Collection是如何去管理用例的呢 ? 先想象我們要測試一個系統(tǒng)恰聘,系統(tǒng)下有多個模塊句各,每個模塊下有很多的被測接口用例 。那么基于這個場景晴叨,我們來通過Collection來進行實現(xiàn):

  1. 點擊Collection凿宾,點擊+New Collection,在彈出的輸入框中輸入Collection名稱(這個就可以理解為所測試的系統(tǒng))
  1. 選中新建的Collection右鍵兼蕊,點擊Add Folder 初厚,在彈出對話框中輸入文件夾名稱(這個就可以理解為系統(tǒng)中的模塊)
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)
  1. 選中新建的Folder,點擊Add Request 遍略,在彈出的對話框中輸入請求名稱惧所,這個就是我們所測試的接口,也可以理解為測試用例 绪杏。
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

那么通過以上三個步驟下愈,達到的效果就是如圖所示:

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

總結(jié),通過上面的操作蕾久,我們實現(xiàn)了一個最簡單的demo模型势似。但實際上,有了這個功能才是postman學(xué)習(xí)的開始僧著,因為很多功能都是基礎(chǔ)這個功能的基礎(chǔ)上進行的履因,比如用例的批量執(zhí)行,Mock 盹愚,接口文檔等功能 栅迄。

4. 批量執(zhí)行接口請求

當(dāng)我們在一個Collection中編寫了很多的接口測試用例,想一起執(zhí)行這批用例皆怕,在postman中是如何操作呢 毅舆?

實現(xiàn)步驟:

  1. 選中一個Collection,點擊右三角愈腾,在彈出的界面點擊RUN
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)
  1. 這是會彈出一個叫Collection Runner的界面憋活,默認會把Collection中的所有用例選中 。
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)
  1. 點擊界面下方的RUN Collection虱黄,就會對Collection中選中的所有測試用例運行 悦即。
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

對上面的幾個紅框內(nèi)的功能進行簡單說明:

  • 斷言統(tǒng)計:左上角的兩個0是統(tǒng)計當(dāng)前Collection中斷言成功的執(zhí)行數(shù)和失敗的執(zhí)行數(shù),如果沒有編寫斷言默認都為0 。
  • Run Summary: 運行結(jié)果總覽辜梳,點擊它可以看到每個請求中具體的測試斷言詳細信息 粱甫。Export Result:導(dǎo)出運行結(jié)果,默認導(dǎo)出的結(jié)果json文件 冗美。
  • Retry: 重新運行魔种,點擊它會把該Collection重新運行一遍
  • New:返回到Runner,可以重新選擇用例的組合 粉洼。

總體來說节预,這個功能主要是用于對一個Collection中的所有用例或部分用例進行批量運行,已達到手工回歸測試的目的属韧。

5.日志調(diào)試

在做接口測試時安拟,經(jīng)常會因為代碼寫的有問題導(dǎo)致報錯,這時通過查看日志就顯得非常重要了宵喂,postman也提供了這樣的功能糠赦,它允許我們在腳本中編寫打印語句,查看打印的結(jié)果 ; 同時也可以查看每個請求的日志信息 锅棕。

在postman中編寫日志打印語句使用的是JavaScript拙泽,編寫的位置可以是Pre-request Script 或Tests標(biāo)簽中。編寫打印語句如:console.log("我是一條日志")

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

那么打印的日如何看呢 裸燎? 在postman中有倆個入口顾瞻,第一個入口就是:view-show postman console 。

第二個入口就是左下角第三個圖標(biāo) 德绿。

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

打開的日志界面

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

這里面有幾個比較實用的功能:

  • 搜索日志:輸入URL或者打印的日志就能直接搜索出我們想要的請求和日志荷荤,這對我們在眾多日志中查找某一條日志是非常方便的 。
  • 按級別搜索:可以查詢log,info,warning,error級別的日志 移稳,有助于我們更快定位到錯誤 蕴纳。
  • 查看原始報文(Show raw log):如果習(xí)慣看原始請求報文的話,這個功能可能更方便些 个粱。
  • 隱藏請求(Hide network):把請求都隱藏掉古毛,只查看輸出日志 。

總之都许,通過這個功能稻薇,我們在請求接口報錯時,通過打印響應(yīng)的日志梭稚,就能很輕松地找到問題原因了 颖低。

6.斷言

如果沒有斷言絮吵,我們只能做接口的功能測試弧烤,但有了斷言后,就為我們做自動化提供了條件,并且在postman中的斷言是非常方便和強大的 暇昂。

我們先來了解下postman斷言的一些特點 莺戒,具體如下

  • 斷言編寫位置:Tests標(biāo)簽
  • 斷言所用語言:JavaScript
  • 斷言執(zhí)行順序:在響應(yīng)體數(shù)據(jù)返回后執(zhí)行 。
  • 斷言執(zhí)行結(jié)果查看:Test Results

在上面我們介紹到急波,編寫的斷言代碼是JavaScript从铲,那如果不會寫怎么辦 ? 不用擔(dān)心澄暮,因為postman已經(jīng)給我們內(nèi)置了一些常用的斷言 名段。用的時候,只需從右側(cè)點擊其中一個斷言泣懊,就會在文本框中自動生成對應(yīng)斷言代碼塊 伸辟。

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

接下來就讓我們了解一些常用斷言,還是按響應(yīng)的組成來劃分馍刮,分別是狀態(tài)行信夫,響應(yīng)頭,響應(yīng)體卡啰。

狀態(tài)行中又包括狀態(tài)碼静稻,狀態(tài)消息 。在postman也可以對這兩個進行斷言

狀態(tài)行中的斷言

  • 斷言狀態(tài)碼:Status code: code is 200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);        //這里填寫的200是預(yù)期結(jié)果匈辱,實際結(jié)果是請求返回結(jié)果
});
  • 斷言狀態(tài)消息:Status code:code name has string
pm.test("Status code name has string", function () {
    pm.response.to.have.status("OK");   //斷言響應(yīng)狀態(tài)消息包含OK
});

響應(yīng)頭中的斷言

  • 斷言響應(yīng)頭中包含:Response headers:Content-Type header check
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type"); //斷言響應(yīng)頭存在"Content-Type"
});

斷言響應(yīng)體(重點)

  • 斷言響應(yīng)體中包含XXX字符串:Response body:Contains string
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});     
//注解
pm.expect(pm.response.text()).to.include("string")      獲取響應(yīng)文本中包含string
  • 斷言響應(yīng)體等于XXX字符串:Response body : is equal to a string
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
//注解
pm.response.to.have.body("response_body_string");   獲取響應(yīng)體等于response_body_string
  • 斷言響應(yīng)體(json)中某個鍵名對應(yīng)的值:Response body : JSON value check
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
//注解
var jsonData = pm.response.json()   獲取響應(yīng)體振湾,以json顯示,賦值給jsonData .注意:該響應(yīng)體必須返會是的json梅誓,否則會報錯
pm.expect(jsonData.value).to.eql(100)  獲取jsonData中鍵名為value的值恰梢,然后和100進行比較

響應(yīng)時間(一般用于性能測試)

  • 斷言響應(yīng)時間:Response time is less than 200ms
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);   //斷言響應(yīng)時間<200ms
});

案例說明

針對以下接口返回的數(shù)據(jù)進行斷言:

{
    "cityid": "101120101",
    "city": "濟南",
    "update_time": "2020-04-17 10:50",
    "wea": "晴",
    "wea_img": "qing",
    "tem": "16",
    "tem_day": "20",
    "tem_night": "9",
    "win": "東北風(fēng)",
    "win_speed": "3級",
    "win_meter": "小于12km/h",
    "air": "113"
}
  • 斷言響應(yīng)狀態(tài)碼為200
  • 斷言city等于濟南
  • 斷言update_time包含2020-04-17



    總結(jié),整體來說梗掰,如果用postman做接口測試嵌言,這個斷言功能必不可少,其中我們常斷言的響應(yīng)體包含和JSON這倆個斷言又是重重之重及穗。

7. 變量(全局/集合/環(huán)境)

變量可以使我們在請求或腳本中存儲和重復(fù)使用其值摧茴,通過將值保存在變量中,可以在集合埂陆,環(huán)境或請求中引用苛白。

對我們做接口測試來說,又是一個非常重要的功能 焚虱。

在postman常用的三種變量分別是全局變量购裙,環(huán)境變量,集合變量 鹃栽。

  • 全局變量:一旦申明了全局變量躏率,全局有效,也就是說postman中的任何集合,任何請求中都可以使用這個變量薇芝。它的作用域是最大的 蓬抄。
  • 環(huán)境變量:要申明環(huán)境變量,首先的創(chuàng)建環(huán)境夯到,然后在環(huán)境中才能創(chuàng)建變量 吴攒。如果要想使用環(huán)境變量撤摸,必須先選擇(導(dǎo)入)這個環(huán)境慨绳,這樣就可以使用這個環(huán)境下的變量了 挟伙。需要說明的是環(huán)境也可以創(chuàng)建多個 。每個環(huán)境下又可以有多個變量 荐开。
  • 集合變量:集合變量是針對集合的优床,也就是說申明的變量必須基于某個集合,它的使用范圍也只是針對這個集合有效 誓焦。

其中胆敞,他們的作用域范圍依次從大到小:全局變量>集合變量>環(huán)境變量 杂伟。 當(dāng)在幾個不同的范圍內(nèi)都申明了相同的變量時移层,則會優(yōu)先使用范圍最小的變量使。

想要使用變量中的值只需倆個步驟赫粥,分別是定義變量和獲取變量 观话。

  1. 定義變量(設(shè)置變量)
  2. 獲取變量(訪問變量)

定義變量

定義全局變量和環(huán)境變量,點擊右上角的小齒輪越平,彈出如下界面频蛔,就可以根據(jù)需求定義全局變量或者環(huán)境變量了。


已經(jīng)定義的全局變量和環(huán)境變量秦叛,可以進行快速查看

一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

定義集合變量

選擇一個集合晦溪,打開查看更多動作(...)菜單,然后點擊編輯 挣跋。選擇“變量”選項卡以編輯或添加到集合變量三圆。

定義變量除了以上方式,還有另外一種方式 避咆。但是這種方式在不同的位置定義舟肉,編寫不一樣。

  • 在URL查库,Params , Authorization , Headers , Body中定義:
  1. 手工方式創(chuàng)建一個空的變量名
  2. 在以上的位置把想要的值選中右擊路媚,選中Set:環(huán)境|全局 ,選中一個變量名樊销,點擊后就會保存到這個變量中
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

在Tests整慎,Pre-requests Script:

  • 定義全局變量:pm.collectionVariables.set("變量名",變量值)
  • 定義環(huán)境變量:pm.environment.set("變量名"适荣,變量值)
  • 定義集合變量:pm.variables.set("變量名",變量值)

獲取變量

定義好變量,接下來就可以使用變量了 院领。需要注意的是,在不同的位置獲取變量够吩,編寫的規(guī)則也是不一樣的 比然。

如果在請求參數(shù)中獲取變量,無論是獲取全局變量周循,還是環(huán)境變量强法,還是集合變量,獲取的方式都是一樣的編寫規(guī)則:{{變量名}} 湾笛。

  • 請求參數(shù)指的是:URL饮怯,Params , Authorization , Headers , Body

如果是在編寫代碼的位置(Tests,Pre-requests Script)獲取變量,獲取不同類型的變量嚎研,編寫的代碼都不相同蓖墅,具體如下:

  • 獲取環(huán)境變量:pm.environment.get(‘變量名’)
  • 獲取全局變量:pm.globals.get('變量名')
  • 獲取集合變量:pm.pm.collectionVariables.get.get('變量名')
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

變量的使用場景非常廣泛,比如我們后面要提到的接口關(guān)聯(lián)临扮,請求前置腳本都會使用到變量 论矾。

8.請求前置腳本

前置腳本其實就是在Pre-requests Script中編寫的JavaScript腳本,想要了解這個功能杆勇,需要先了解它的執(zhí)行順序贪壳。那么下面就來看下它的執(zhí)行順序 。

可以看出蚜退,一個請求在發(fā)送之前闰靴,會先去執(zhí)行Pre Request Script(前置腳本)中的代碼 。那么這個功能在實際工作中有什么作用呢 钻注?

主要場景:一般情況下蚂且,在發(fā)送請求前需要對接口的數(shù)據(jù)做進一步處理,就都可以使用這個功能幅恋,比如說膘掰,登錄接口的密碼,在發(fā)送前需要做加密處理佳遣,那么就可以在前置腳本中做加密處理识埋,再比如說,有的接口的輸入?yún)?shù)有一些隨機數(shù)零渐,每請求一次接口參數(shù)值都會發(fā)送變化窒舟,就可以在前置腳本中編寫生成隨機數(shù)的代碼 ∷信危總體來說惠豺,就是在請求接口之前對我們的請求數(shù)據(jù)進行進一步加工處理的都可以使用前置腳本這個功能银还。

接下來通過一個案例來看下該功能是如何使用 ?

案例:

  • 請求的登錄接口URL洁墙,參數(shù)t的值要求的規(guī)則是每次請求都必須是一個隨機數(shù)蛹疯。
  • 接口地址:http://localhost/index.php?m=Home&c=User&a=do_login&t=0.7102045930338428
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

實現(xiàn)步驟:

  1. 在前置腳本中編寫生成隨機數(shù)
  2. 將這個值保存成環(huán)境變量
  3. 將參數(shù)t的值替換成環(huán)境變量的值 热监。

總之捺弦,這個前置腳本對我們做接口測試也非常有用,對一些復(fù)雜的場景孝扛,都可以使用前置腳本進行處理后再請求接口 列吼。

9. 接口關(guān)聯(lián)

在我們測試的接口中,經(jīng)常出現(xiàn)這種情況 苦始。 上一個接口的返回數(shù)據(jù)是下一個接口的輸入?yún)?shù) 寞钥,那么這倆個接口就產(chǎn)生了關(guān)聯(lián)。 這種關(guān)聯(lián)在做接口測試時非常常見陌选,那么在postman中理郑,如何實現(xiàn)這種關(guān)聯(lián)關(guān)系呢 ?

實現(xiàn)思路:

  1. 提取上一個接口的返回數(shù)據(jù)值咨油,
  2. 將這個數(shù)據(jù)值保存到環(huán)境變量或全局變量中
  3. 在下一個接口獲取環(huán)境變量或全局變量

案例:

  • 用戶上傳頭像功能香浩,需要用戶先上傳一張圖片,然后會自動預(yù)覽 臼勉。那么在這個過程中邻吭,會調(diào)用到倆個接口 ,第一個上傳頭像接口宴霸,第二個預(yù)覽圖像接口 囱晴。
  • 其中調(diào)用上傳頭像接口成功后會返回如下信息:
{
    "url": "/public/upload/user//head_pic//ba51d1c2f7f7b98dfb5cad90846e2d79.jpg",
    "title": "banner",
    "original": "",
    "state": "SUCCESS",
    "path": "images"
}

而圖像預(yù)覽接口URL為:http://localhost/public/upload/user//head_pic//ba51d1c2f7f7b98dfb5cad90846e2d79.jpg ∑靶唬可以看出這個接口的URL后半部分其實是上一個接口返回的url的值 畸写。那么這倆個接口就產(chǎn)生了關(guān)聯(lián)。那么在postman 可以通過以下三步完成這倆個接口的關(guān)聯(lián)實現(xiàn) 氓扛。

實現(xiàn)步驟:

  1. 獲取上傳頭像接口返回url的值
  2. 將這個值保存成全局變量(環(huán)境變量也可以)
  3. 在圖像預(yù)覽中使用全局變量
一文帶你全面解析postman工具的使用(基礎(chǔ)篇)

可以看出枯芬,接口的關(guān)聯(lián)的解決方案都是用的是變量中的知識,也就是說只要你明確了要提取的值采郎,后面就是保存該值千所,然后在其他接口使用該值就可以了。

10.常見返回值獲取

在做接口測試時蒜埋,請求接口返回的數(shù)據(jù)都是很復(fù)雜的json數(shù)據(jù)淫痰,有著多層嵌套,這樣的數(shù)據(jù)層級在postman怎么獲取呢 整份?

案例1:多層json嵌套, 獲取user_id的值

{
    "code": 0,
    "message": "請求成功待错!",
    "data": {
        "user_id": "1252163151781167104"
    }
}
//獲取json體數(shù)據(jù)
var jsonData = pm.response.json()
// 獲取user_id的值,通過.獲取
var user_id = jsonData.data.user_id

案例2:json中存在列表籽孙,獲取points中的第二個元素

{
    "code": 0,
    "message": "請求成功!",
    "data": {
        "roles": {
            "api": [
                "API-USER-DELETE"
            ],
            "points": [
                "point-user-delete",
                "POINT-USER-UPDATE",
                "POINT-USER-ADD"
            ]
        },
        "authCache": null
    }
}
//獲取json體數(shù)據(jù)
var jsonData = pm.response.json()
// 獲取user_id的值,通過下標(biāo)獲取列表中某個元素
var user_id = jsonData.data.roles.points[1]

案例3:列表中取最后一個元素

{
    "code": 0,
    "message": "請求成功火俄!",
    "data": {
        "total": 24,
        "rows": [

            {
                "id": "1066370498633486336",
                "mobile": "15812340003",
                "username": "zbz"
            },
            {
                "id": "1071632760222810112",
                "mobile": "16612094236",
                "username": "llx"
            },
            ...
            {
                "id": "1075383133106425856",
                "mobile": "13523679872",
                "username": "test001",

            },
//獲取json體數(shù)據(jù)
var jsonData = pm.response.json()
// 獲取id的值,通過slice(-1)獲取列表中最后一個元素犯建。
var id = jsonData.data.rows.slice(-1)[0]

三.postman快捷功能

在這一個部分中,我將介紹幾個非常便捷的功能瓜客,只要你使用了它适瓦,你將能感受到這些功能所帶給我們效率上的提升。 具體的功能如下 :

  • 快速填寫查詢參數(shù)
  • 快速填寫請求頭
  • 快速實現(xiàn)添加一個請求
  • 如何繼承集合認證
  • 批量斷言
  • 快速查詢和替換

1. 快速填寫查詢參數(shù)

查詢參數(shù)在上面已經(jīng)介紹過忆家,在這里我們只說明postman填寫查詢參數(shù)的地方就是Params。

有時候我們要填寫的參數(shù)比較多德迹,且每個參數(shù)都是按照key-value形式填寫完成芽卿,但是這樣填寫起來費時費力。那是否有更加省事的填寫方式胳搞? 答案肯定是有的 卸例,我們可以想象我們的這些請求都可以通過瀏覽器或抓包工具抓取到 。那么我們就可以直接將瀏覽器或抓包工具的請求參數(shù)直接拷貝進來 肌毅,下面就介紹如何從瀏覽器和抓包工具中拷貝參數(shù)筷转。

  • 從瀏覽器拷貝查詢參數(shù)
  1. 首先在瀏覽器通過F12找到你要抓取的請求
  2. 在Headers的最下端找到Form Data .
一文帶你全面解析postman工具的使用(效率篇)
  1. 然后打開postman,在Params 中點擊Bulk Edit


  1. 直接將拷貝的內(nèi)容粘貼進來即可
一文帶你全面解析postman工具的使用(效率篇)
  • 從抓包工具中拷貝查詢參數(shù)(以fiddler為例)
  1. 打開Fiddler悬而,找到你要抓取的數(shù)據(jù)包
  2. 選擇Raw呜舒,直接拷貝請求URL或者拷貝查詢參數(shù)
一文帶你全面解析postman工具的使用(效率篇)
  1. 直接粘貼到地址欄或者查詢參數(shù)中即可 。

2.快速填寫請求頭

在我們做接口測試時笨奠,幾乎每個接口都要填寫headers袭蝗,而且headers里的參數(shù)多是公共參數(shù),也就是說每個接口都需要填寫這些一樣的參數(shù) 般婆。常規(guī)操作也是在每個headers中按照key-value形式逐個填寫完成到腥,但是這樣填寫起來費時費力。接下來就介紹三種快捷設(shè)置headers 蔚袍。

  • 從其它請求拷貝粘貼

若我們要在一個headers中填寫幾個參數(shù)乡范,而這些參數(shù)都已在其它請求的headers中設(shè)置過,那么這時就可以直接從其它請求中拷貝啤咽,具體操作步驟:

  1. 進入已設(shè)置過的請求headers中晋辆,鼠標(biāo)長按選擇一個或多個請求,當(dāng)出現(xiàn)灰色的橫條宇整,按Ctrl+C 栈拖。
  2. 回到當(dāng)前要設(shè)置的請求中,點擊Ctrl+v .這樣就會把上一個請求中的headers拷貝到當(dāng)前請求 没陡。


通過如上設(shè)置涩哟,是否可以更加快捷地設(shè)置我們請求頭了 索赏。當(dāng)然,覺得上面這種方法使用起來不爽贴彼,接下來我們來看另外一種快捷設(shè)置方法 潜腻。

  • 預(yù)置(保存)公共請求

這個方法同樣是對一些公共參數(shù)有效的,如果每個請求都要設(shè)置這些參數(shù)器仗,那這個方法很有效融涣。具體步驟:

  1. 點擊Headers選項框中的Presets(最右側(cè)),點擊Manage Presets .
  2. 在彈出的對話框精钮,點擊Add威鹿。
  3. 在彈出的對話框中,把常用的key-value錄入轨香,并給它起個名字忽你。點擊add即可。
  4. 其他請求使用的時候臂容,直接點擊Presets 科雳,選擇剛才設(shè)置的名字糟秘,就會自動把對應(yīng)的參數(shù)設(shè)置上 尿赚。
一文帶你全面解析postman工具的使用(效率篇)

以上的這兩種方法設(shè)置起來雖然便捷吼畏,但是只是對公共參數(shù)有效。針對每個請求的唯一參數(shù)是無效的 嘁灯。下面的這種方法是可以針對任何參數(shù)的 泻蚊。

  • 從瀏覽器中或者抓包工具中拷貝
  1. 在瀏覽器中拷貝或者從抓包工具拷貝跟上面的Params中的操作是一樣的,這里就不再贅述了丑婿。

3. 快速實現(xiàn)添加一個請求

正常情況下性雄,我們添加一個請求需要打開一個窗口,選擇請求方法羹奉,地址秒旋,以及相對應(yīng)的參數(shù) 。如果請求過多诀拭,難免會覺得添加起來麻煩细卧,那么在postman給我們提供一個導(dǎo)入功能止邮,它可以導(dǎo)入相關(guān)的請求 撩匕。比較常用的是如下這三種滓技,分別是:

  • 從抓包工具中導(dǎo)入請求 ;
  • 從瀏覽器中導(dǎo)入請求 丸边;
  • 直接導(dǎo)入別人postman中寫好的請求 骄呼。
一文帶你全面解析postman工具的使用(效率篇)

從抓包工具導(dǎo)入請求

  1. 在瀏覽器中抓取到想要的包辟犀,然后右鍵copy出Curl的數(shù)據(jù)包
  2. 在postman的import中將數(shù)據(jù)粘貼進來,就會自動生成了對應(yīng)的請求 疚漆。
一文帶你全面解析postman工具的使用(效率篇)
一文帶你全面解析postman工具的使用(效率篇)

下面的這個截圖是從接口文檔swagger铆农,將這個數(shù)據(jù)包拷貝粘貼到上面的文本中(Paste Raw Text) 也可以自動生成請求 岭皂。

一文帶你全面解析postman工具的使用(效率篇)

總之土至,這個功能非常實用楷扬,尤其是可以把瀏覽器或抓包工具中的數(shù)據(jù)包導(dǎo)入進來直接使用螟加,大大地減少了我們的接口填寫時間 黍图。

從瀏覽器中導(dǎo)入請求

從瀏覽器中導(dǎo)包的原理和抓包工具是一樣的揩环,以下為導(dǎo)入請求的步驟:

  1. 在瀏覽器中抓取到想要的包褒墨,然后右鍵copy出Curl的數(shù)據(jù)包
一文帶你全面解析postman工具的使用(效率篇)
  1. 在postman的import中將數(shù)據(jù)粘貼進來锄奢,就會自動生成了對應(yīng)的請求 。
一文帶你全面解析postman工具的使用(效率篇)

直接導(dǎo)入別人postman中寫好的請求 。

很多情況下,我們是每個人負責(zé)一部分的,當(dāng)你用到其它同事寫好的請求時,你就可以通過如下這個操作來完成,但是這個功能需要團隊成員都登錄postman賬號逞怨。具體的操作步驟為:

  1. 將已經(jīng)寫好請求所在的集合窥翩,點擊分享
  1. 在彈出的界面點擊Get public link
一文帶你全面解析postman工具的使用(效率篇)
  1. 復(fù)制生成的鏈接

4.在新的postman賬號中借笙,選擇Import-Import From Link 進行導(dǎo)入

這樣我們其它團隊成員就可以通過這個功能共享寫好的整個集合了 俯邓。

4.繼承集合認證

這又是一個非常實用的功能引镊,對我們做接口測試來說,經(jīng)常要處理登錄認證的情況 蚓胸。如果不用這個Authorization其實也能解決認證的問題扔枫,無非就是把要認證的數(shù)據(jù)按照要求在指定位置傳入?yún)?shù)即可。比如我們之前測試的系統(tǒng)锹安,登錄后返回的token要在每個請求接口的headers中傳入 短荐。這時就需要在每個headers中都填寫一個認證參數(shù)傳入 入宦,但是這樣做的話太過繁瑣继谚,如果使用認證(Authorization)功能的話,就會大大簡化了我們的認證過程盼铁。

我們先來看下這個功能的具體位置及主要作用 。

Inherit auto from parent:從父級繼承身份驗證张足,是每個請求的默認選擇 庞呕。這是一個很有用的功能,當(dāng)我們對一個集合(collection)進行測試的時候拙绊,集合中的每個請求都需要獲取token射众,那么如果我們在集合中把token處理好的話,那么該集合下的所有請求都會自動獲取到這個token梯找,也就省略了我們對每個token進行處理了粗恢。

  • 實現(xiàn)步驟:
  1. 選中一個集合進行編輯脾猛,切換到Pre-Request Script.在這里請求登錄接口 撕彤,將返回的token值拿到鱼鸠,然后保存成全局變量 。
  2. 切換到Authorization選項卡羹铅,在這里直接獲取token 蚀狰。這里的獲取token需要根據(jù)具體的項目 。比如我們所測試的項目正好是Bearer token這種形式 职员。直接在列表中使用這種方式輸入{{token}}即可麻蹋。
  3. 向集合添加請求,無需進行token處理焊切,所有接口都能請求成功 扮授。
一文帶你全面解析postman工具的使用(效率篇)
一文帶你全面解析postman工具的使用(效率篇)
  • No Auth: 無需身份認證的可以選擇這個 。
  • API Key: 也有很多系統(tǒng)是通過這種認證方式专肪,比如在請求頭添加 model: data xxx-xxx-xxx-xxxx
一文帶你全面解析postman工具的使用(效率篇)
  • Bearer Token:很多系統(tǒng)都是以這種認證方式刹勃,就是在請求頭中添加Authorization:Bearer Token 。那么使用這種認證就完全等同于在Headers中添加Authorization參數(shù) 嚎尤。
一文帶你全面解析postman工具的使用(效率篇)

通過在集合中完成登錄認證

除了以上訪問完成登錄認證以外荔仁,我們還可以在集合中完成登錄認證 ,但是這個功能需要先熟悉如何通過實現(xiàn)發(fā)送請求芽死,接收響應(yīng)數(shù)據(jù)等 乏梁。

代碼中發(fā)送請求是通過pm.sendRequest來完成的 。在Pre-requests Script 和Tests中都可使用 关贵。支持發(fā)送各種類型的請求遇骑。具體如下:

  • 代碼中發(fā)送查詢參數(shù)的請求數(shù)據(jù)
  • 代碼中發(fā)送JSON參數(shù)的請求數(shù)據(jù)
  • 代碼中發(fā)送表單參數(shù)的請求數(shù)據(jù)

1)發(fā)送查詢參數(shù)請求數(shù)據(jù)

//發(fā)送一個get請求,請求成功后設(shè)置一個環(huán)境變量
pm.sendRequest('http://cx.shouji.#/phonearea.php?number=13012345678', function (err, res) {
    if (err) {
        console.log(err);
    } else {
        pm.environment.set("xab", "123");
    }
});

2)發(fā)送JSON請求數(shù)據(jù)

const PostJsonRequest = {
  url: 'http://test.itheima.net/api/sys/login',
  method: 'POST',
  header: 'Content-Type:application/json',
  body: {
    mode: 'raw',
    raw: JSON.stringify({ "mobile": '13110001002',"password":"123456" })
  }
};
pm.sendRequest(PostJsonRequest, function (err, res) {
  console.log(err ? err : res.json());
});

3)發(fā)送表單數(shù)據(jù)

const PostFormRequest = {
  url: 'http://localhost/index.php?m=Home&c=User&a=do_login&t=0.8975232623499945',
  method: 'POST',
  header: 'Content-Type:application/x-www-form-urlencoded',
  body: {
    mode: 'x-www-form-urlencoded',
    raw: 'username=13088888888&password=123456&verify_code=8888'
  }
};
pm.sendRequest(PostJsonRequest, function (err, res) {
  console.log(err ? err : res.json());
});

以上代碼都是可以放在Tests或者放在Pre-requests Script中使用的揖曾,那么通過它我們也可以解決登錄認證的問題落萎,以下通過一個案例來說明如何使用。

案例說明:

  • 項目的token通過sendRequest來實現(xiàn) 翩肌。

實現(xiàn)步驟:

  1. 點擊集合右擊模暗,選擇edit,切換到Pre-request Scripts中 .
  2. 在文本域編寫發(fā)送登錄接口的前置腳本念祭,并將獲取到的token保存到集合變量 兑宇。
  3. 然后在Authorization中設(shè)置獲取token,使其token在集合中全局有效 粱坤。
  4. 運行該集合(集合下就不需要編寫登錄請求了)隶糕,批量運行成功 瓷产。
一文帶你全面解析postman工具的使用(效率篇)

通過這種方式來設(shè)置,就不需要你在集合下面單獨新建一個登錄的文件夾了枚驻,也不需要你在每個請求中加入token參數(shù)了濒旦,非常的方便 。

5. 批量斷言

前面我們介紹過斷言再登,就是對每個接口編寫一個或多個驗證點 尔邓,在編寫斷言的過程中還有這么一種場景,就是多個接口中有部分接口返回的參數(shù)名都是一樣的 锉矢,包括返回的結(jié)果也是一樣的 梯嗽。那么針對這些返回相同的參數(shù)值來說,其實就可以使用一個共同的斷言 沽损。通過編寫一個斷言完成對不同接口中相同返回參數(shù)的批量斷言 灯节。比如說每個接口都會有code,或者HTTP的響應(yīng)狀態(tài)碼都可以使用這個通用斷言 绵估。

編寫通用斷言的位置是在集合或集合的文件夾中 炎疆。具體位置如下圖:


案例說明:

  • 對項目中每個接口返回的響應(yīng)狀態(tài)碼進行斷言,同時對用戶管理模塊下每個接口的code進行斷言国裳。

實現(xiàn)步驟:

  1. 選擇其中一個集合形入,進行編輯,選擇Tests標(biāo)簽躏救,在文本域內(nèi)輸入斷言響應(yīng)狀態(tài)碼的代碼塊
  2. 選擇用戶管理文件夾唯笙,進行編輯,選擇Tests標(biāo)簽盒使,
  3. 批量運行該集合崩掘,就會查看到每個用例中都會
一文帶你全面解析postman工具的使用(效率篇)
一文帶你全面解析postman工具的使用(效率篇)
一文帶你全面解析postman工具的使用(效率篇)

可以看出,通過這個功能可以幫我們完成最少的代碼少办,完成更多的測試苞慢。但是它的使用條件就是返回的參數(shù)名,參數(shù)值都是一樣的才能使用這個批量斷言功能 英妓。

6. 快速查詢與替換

有時候我們常會遇到這樣一種問題挽放,系統(tǒng)中有太多的用例,環(huán)境變量和系統(tǒng)變量的值也太多蔓纠,查找其中的某個值太不方便辑畦;或者有的值想要修改,但苦于修改的地方太多腿倚,修改起來太費勁纯出。那么,針對這樣的困擾,是否有辦法解決呢 暂筝? 答案是有的 箩言,那就是快速查詢與批量替換。

接下來我們先來了解這個功能的入口和簡單介紹焕襟。

功能介紹:

  • FIND:搜索輸入框陨收,在搜索框中輸入你想要搜索的值,postman自動會在已打開的請求鸵赖,集合务漩,環(huán)境變量,全局變量中去搜索卫漫,如果搜索到菲饼,就會在右側(cè)展示出搜素的結(jié)果 肾砂。其下方有兩個復(fù)選框列赎,分別是Regex(正則匹配)和Ignore Case(忽略大小寫)。
  • WHERE:帶條件查詢镐确,默認會選擇everything(查詢所有)包吝,如果想要選擇某一個tab搜索,從下面選擇即可源葫,可以支持從集合诗越、環(huán)境變量、全局變量以及以打開的請求中搜索 息堂。
  • REPLACE WITH: 替換文本框嚷狞,在此文本框中輸入替換的值,點擊Replace in ... 按鈕荣堰,會將搜索出的值全部替換 床未。
  • 右側(cè)的搜索結(jié)果:搜索出對應(yīng)的結(jié)果后,右側(cè)每個tab中都會顯示具體的數(shù)字振坚,代表當(dāng)前tab中匹配值的數(shù)量薇搁。你可以選擇一個值點擊Open,就會直接進入到對應(yīng)的功能選項卡中 渡八。

案例說明:

  • 案例1:按照正則表達式搜索11位數(shù)字啃洋。

操作步驟:在搜索框中輸入\d{11},勾選Regex,點擊Find屎鳍,右側(cè)就會展示出含有11位數(shù)字的所有信息宏娄。

一文帶你全面解析postman工具的使用(效率篇)
  • 案例2:從集合中搜索
  1. 在搜索框中輸入搜索關(guān)鍵字
  2. 在WHERE中選擇Choose entities to find in,選中Collections 逮壁。
  3. 找到你想要的結(jié)果孵坚,點擊Open in builder。就可以直接打開對應(yīng)請求tab.
一文帶你全面解析postman工具的使用(效率篇)
  • 案例3:替換某個字符串
  1. 在查找搜索框中輸入關(guān)鍵字,
  2. 在REPLACE WITH框中輸入想要替換的值十饥,可以選擇select All ,點擊后面的按鈕窟勃。
  3. 再次搜索替換后的結(jié)果,發(fā)現(xiàn)所有值都已被替換 逗堵。

總之秉氧,通過這個功能,我們可以快速找到我們想要的集合蜒秤,環(huán)境變量汁咏,集合變量,請求或者代碼塊作媚。

四. 高級功能介紹

這里所謂的高級功能攘滩,都是個人的定義,之所以稱為高級纸泡,可能比前面的功能使用起來稍顯復(fù)雜漂问,且使用頻率也不是很高,但是這些功能都具有一定的場景性女揭,也就是說當(dāng)你遇到了解決某一類場景的問題時蚤假,正好它也提供了這方面的功能,那么使用起來就非常的方便 吧兔。

  • 讀取外部文件進行參數(shù)化
  • 生成測試報告
  • 使用工作空間
  • 集合同步與分支管理
  • 編寫接口文檔
  • mock服務(wù)
  • 監(jiān)控
  • 連接數(shù)據(jù)庫

1.讀取文件進行參數(shù)化

測試過程中磷仰,常會遇到一個接口要驗證很多的測試數(shù)據(jù),而輸入?yún)?shù)又都是一樣的境蔼。這時我們首先就會想到數(shù)據(jù)參數(shù)化(數(shù)據(jù)驅(qū)動)灶平,在postman中也提供了數(shù)據(jù)參數(shù)化功能,它需要把數(shù)據(jù)單獨的存放在一個文件中管理箍土,然后通過讀取這個文件實現(xiàn)所有的數(shù)據(jù)的驗證逢享。

實現(xiàn)步驟 。

  1. 在本地電腦創(chuàng)建數(shù)據(jù)文件涮帘,支持數(shù)據(jù)格式文件分別為csv和json 拼苍。在文件中分別包括參數(shù)名和數(shù)據(jù)
  2. 其中,在postman中需要讀取外部文件的參數(shù)名调缨,通過參數(shù)名來獲取文件中的數(shù)據(jù)疮鲫;其中在不同的位置讀取方式不同:在URL輸入框,Params,Authorization,Headers,Body中讀取數(shù)據(jù)方式為:{{參數(shù)名}}弦叶。在Pre-request Script和Tests中讀取數(shù)據(jù)方式為:data.參數(shù)名
  3. 通過Runner-Data讀取數(shù)據(jù)文件來運行俊犯。

案例說明

  • 請求天氣接口,輸入不同的城市id伤哺,會返回不同的城市和天氣情況 燕侠,需對返回城市和天氣進行驗證 者祖。
  1. 創(chuàng)建city.json 或 city.json ,格式如下
一文帶你全面解析postman工具的使用(高級篇)
  1. 在請求中替換參數(shù)名:city_id,city,weather .

其中city_id在URL中替換,故通過{{}}替換 绢彤。

city和weather在Tests中替換七问,需要通過data.city , data.weather

  1. 選擇數(shù)據(jù)文件導(dǎo)入
一文帶你全面解析postman工具的使用(高級篇)
  1. 查詢運行結(jié)果
一文帶你全面解析postman工具的使用(高級篇)

2.生成測試報告

postman生成測試報告需要一個插件:newman ,并且這個插件需要先安裝 茫舶。

安裝步驟:

  1. 安裝nodejs: newman是由nodejs開發(fā)械巡,所以要先安裝它的運行環(huán)境,下載地址:http://nodejs.cn/download/ 饶氏。安裝成功后需要驗證:在cmd窗口中輸入node -v,如果輸出node的版本信息讥耗,則證明安裝成功。
  2. 安裝newman:安裝成功nodejs后疹启,會自動安裝一個包管理工具npm(類似于python中的pip)古程。通過它就可以直接安裝newman。 打開cmd窗口輸入:npm install -g newman .安裝成功后進行驗證:newman -v 喊崖。如果輸出newman的版本信息挣磨,則證明安裝成功 。
  3. 安裝newman-reporter-html:通過這個插件可以指定報告的生成路徑和名稱贷祈。同樣打開cmd窗口輸入:npm install -g newman-reporter-html.安裝成功后進行驗證:npm list -g --depth 0.如果能出現(xiàn)newman-reporter-html包及版本及證明安裝成功 趋急。

通過newman生成測試報告必須在cmd執(zhí)行,命令執(zhí)行:newman run <collection>[options] 势誊,其中options中有很多參數(shù),接下來我們來解析下這些參數(shù)谣蠢。

命令解析:

  • -e : 可選粟耻,指定一個URL或者postman的環(huán)境變量腳本文件。如果集合中指定了環(huán)境變量眉踱,則需要添加這個參數(shù)挤忙。
  • -g:可選,指定一個URL或者postman的全局變量腳本文件谈喳,如果集合中指定了全局變量册烈,則需要加這個參數(shù) 。
  • -r:可選婿禽,指定測試報告的類型赏僧,如果想生成對應(yīng)的報告類型,需要添加這個參數(shù)扭倾,典型的有html,json,cli淀零,若不添加,默認為cli膛壹。
  • -d:可選驾中,指定一個數(shù)據(jù)參數(shù)化文件 唉堪,如果有參數(shù)化文件,需要添加這個選項肩民。
  • --reporter-html-export:可選唠亚,指定生成報告的路徑和文件名,如果不添加該參數(shù)持痰,默認會生成一個newman的文件夾趾撵,里面存放著生成的測試報告

輸入的命令就可以是下面這樣的 。

newman run collect_a.json [-e environment_b.json] [-r html] [--reporter-html-export report.html]  其中[]內(nèi)的參數(shù)是可選的共啃。

案例說明:

  • 案例1:通過newman生成測試報告占调,集合為一個URL。
命令:
newman run https://www.getpostman.com/collections/6e95413b91fe582ec78d  說明:run后面跟的鏈接可以通過分享得到
  • 案例2:通過newman生成測試報告移剪,報告格式為默認:cli
newman run A.postman_collection.json  -r cli //默認的展示結(jié)果如下圖所示究珊。
  • 案例3:通過newman生成測試報告,需要添加環(huán)境變量文件纵苛,并且生成HTML報告 剿涮。
newman run B.postman_collection.json -e test.postman_environment.json -r html
  • 案例4:通過newman生成測試報告,需要制定報告路徑和文件名稱攻人。
newman run B.postman_collection.json -e test.postman_environment.json -r html --reporter-html-export report.html   //生成的測試報告會存放在當(dāng)前路徑下取试,報告名為:report.html

更漂亮的報告

安裝插件:newman-reporter-htmlextra

打開cmd窗口,輸入命令:npm install -g newman-reporter-htmlextra

驗證安裝:npm list -g --depth 0

生成報告:

newman run APITest.postman_collection.json -r htmlextra --reporter-html-export htmlReport.html

雖然newman提供了強大的生成測試報告功能怀吻,但是目前為止瞬浓,生成的測試報告都是在我們本地,那如果想要把報告展示給團隊成員查看呢 蓬坡? 我們就可以通過jenkins進行持續(xù)集成猿棉,把生成的報告展示在Jenkins上,甚至可以將報告通過郵件發(fā)送給團隊成員 屑咳。

3.使用工作空間

前面我們說集合(Collection)就像一個項目萨赁,通過建立一個集合,可以對其集合中的用例進行分類管理兆龙;當(dāng)然如果有多個項目杖爽,也可以建多個而項目進行管理。而接下來要學(xué)習(xí)的工作空間更是對不同集合進行分類管理紫皇,比如說我要新建一個自己學(xué)習(xí)的工作空間慰安,也可以新建一個用于工作的工作空間。這樣就可以在不同的工作空間內(nèi)管理不同的集合坝橡,達到集合的有效管理 泻帮。

接下來看下工作空間的主要功能介紹:

  • 將元素添加到另外一個工作空間
  • 邀請成員加入工作空間
  • 將集合和環(huán)境共享到工作空間
  • 查看工作空間的詳細信息
  • 重命名工作區(qū)
  • 離開工作區(qū)
  • 編輯工作區(qū)的描述
  • 管理團隊工作區(qū)的成員

將元素添加到另外一個工作空間

你可以將集合或環(huán)境從一個工作空間添加到另一個工作空間。這樣就會使得數(shù)據(jù)在不同的工作空間內(nèi)進行共享 计寇。

實現(xiàn)步驟:

  1. 點擊postman導(dǎo)航欄中間的工作空間(下三角)锣杂,選擇All workspaces .
  1. 在彈出的頁面中脂倦,選擇一個工作空間,點擊Add to workspace.(向這個工作空間共享數(shù)據(jù))
一文帶你全面解析postman工具的使用(高級篇)
  • 當(dāng)然除了添加到工作空間數(shù)據(jù)外元莫,你也可以進行重命名赖阻,進行查看詳情,添加成員以及刪除工作空間 踱蠢。具體操作點擊Add to workspace后的(...)
  • 你可以將添加后的元素從工作空間刪除火欧,就是右擊集合,點擊‘Remove to workspace’茎截,點擊后從工作區(qū)中刪除
  1. 選擇一個要共享的工作空間苇侵,選擇集合或環(huán)境,點擊Add to this workspace
一文帶你全面解析postman工具的使用(高級篇)
一文帶你全面解析postman工具的使用(高級篇)

邀請成員加入工作空間

一個團隊的工作空間企锌,往往需要多個團隊成員來共同維護榆浓,這時如果想往工作空間中加入新成員,就需要通過下面的邀請成員到工作區(qū)撕攒,具體如下:

實現(xiàn)步驟:

  1. 點擊postman導(dǎo)航欄中間的Invite.在彈出的對話輸入框輸入郵箱地址(郵箱一定要和賬號綁定)陡鹃,點擊Add 。
  2. 添加到文本域后抖坪,給賬號設(shè)置角色萍鲸,點擊Send Invitarions 。
  3. 進入郵箱點擊鏈接驗證擦俐,驗證成功后即可成員該空間的成員 脊阴。同時會自動將該空間的集合同步到本地 。備注:除了以上可添加成員后捌肴,也可以通過工作空間后的...蹬叭,選擇Add Members 也可以添加成員。


將集合和環(huán)境共享到工作空間

有時候状知,我們需要把在本地的集合或環(huán)境分享給團隊的工作空間中,這樣團隊其他成員就都可以看到并使用了孽查。

共享集合到工作空間

  1. 選擇一個集合饥悴,點擊(...)或者右鍵,點擊Share Collection .
  2. 在彈出的界面中逆皮,選擇要共享的工作空間绰精,點擊Share and Continue .
  3. 這樣該集合就會被該工作空間的所有成員看到并有權(quán)限操作汁针,當(dāng)然上面也可以選擇共享給工作空間中部分成員。
一文帶你全面解析postman工具的使用(高級篇)

4.集合的分支管理

像git一樣贷揽,在postman中也有源碼管理功能,通過創(chuàng)建團隊的workspace梦碗,團隊成員可以在這個workspace中像git管理源代碼一樣禽绪,創(chuàng)建分支蓖救,合并分支,拉取分支等印屁。創(chuàng)建workspace見XXX 循捺。

接下來我們就先來了解下postman的這幾個功能 。

  • 創(chuàng)建集合分支(Create a fork)
  • 合并變更(Merge changes)
  • 創(chuàng)建pull請求(Create Pull Request)

創(chuàng)建集合分支

分支的創(chuàng)建雄人,需要基于某個集合中从橘,集合分支創(chuàng)建后, 這就相當(dāng)于這個集合的主分支础钠,團隊成員可以基于這個分支拉取一個新的分支開發(fā)恰力,最后將修改的新的腳本合并到主分支上。接下來是創(chuàng)建一個分支:

  1. 選中一個集合旗吁,點擊(...)或右鍵踩萎,點擊“Create a fork”
  2. 在彈出的對話框中輸入Fork Label ,選擇團隊的workspace 阵漏,點擊“Fork collection” 驻民。
  3. 進入到對應(yīng)的workspace,就會查看到對應(yīng)的collection ,這里的集合后都有一個fork的標(biāo)志履怯。


合并變更

當(dāng)我們在集合中加了新的功能后回还,我們就需要把這些變更提交到主分支上,提交成功后叹洲,團隊成員也能看到你最新的修改數(shù)據(jù)了柠硕,那么如何進行合并操作呢?

  1. 點擊Collection右側(cè)的(...)运提,點擊Merge Changes.
  2. 在彈出的頁面中蝗柔,點擊右上角的Merge all changes .注意,這時merge時提示已經(jīng)有最新更新了民泵,postman會提示你pull Changes癣丧,這時你可以先拉取最新的變更 ,然后點擊 Merge all changes栈妆。
  3. 在彈出的新對話框默認選擇Merge changes胁编,點擊Merge 。


一文帶你全面解析postman工具的使用(高級篇)

創(chuàng)建 Pull 請求

當(dāng)團隊提交了最新修改后鳞尔,我們就可以通過Create pull Request拉取最新的修改數(shù)據(jù) 嬉橙。

操作步驟:

  1. 點擊Collection右側(cè)的(...),點擊Create pull Request.
  2. 在彈出的頁面中寥假,輸入title和描述市框,點擊 Create pull Request .
  3. 查看postman請求,最新的更新就會拉取到本地的分支集合中 糕韧。
一文帶你全面解析postman工具的使用(高級篇)

在使用的過程中枫振,postman中的Create a fork ,Create pull request, Merge change 就特別像git中的create branch 喻圃,pull ,push 蒋得。

5.編寫接口文檔

在做接口測試時级及,經(jīng)常會出現(xiàn)填寫的請求數(shù)據(jù)不太清楚,這時我們首先會想到的就是接口文檔 额衙。但很多時候開發(fā)寫的文檔也不是很完善饮焦,更新并不及時 ;亦或是更新了窍侧,我們也得跳出工具去找對應(yīng)的接口文檔县踢,用戶體驗上不太好。所以伟件,現(xiàn)在出現(xiàn)了一些工具既支持接口調(diào)試也同時支持文檔的查看硼啤,無需在工具和文檔之間來回切換 。那么在postman中也是支持編寫接口文檔的 斧账,而且它的文檔功能還非常強大 谴返。

接下來我們介紹postman跟接口文檔的相關(guān)功能 。

  • 生成文檔(鏈接)
  • 編寫文檔

生成文檔

生成文檔有兩種方式咧织,直接打開鏈接和新建API文檔嗓袱。

第一種:直接打開鏈接非常簡單,就是選擇一個集合习绢,點擊右三角,點擊View in web 渠抹。

第二種,操作步驟如下:

  1. 點擊左上角的New闪萄,選擇API Documentation .
  2. 彈出的第一個Tab頁面有兩個選項梧却,是新建一個集合還是從已有集合選擇 。根據(jù)自己的需求來選擇败去。
  3. 進入到第二個Tab頁面放航,輸入對集合的一些基本描述 ,比如基本介紹圆裕,認證方式三椿,錯誤碼等 。
  4. 進入到第三個Tab頁面葫辐,這時會彈出一個鏈接,直接點擊鏈接就會進入到接口文檔頁面 伴郁。如下圖
一文帶你全面解析postman工具的使用(高級篇)

以上兩個都可以進入文檔鏈接耿战,主要區(qū)別在于第二種可以加入一些整體性的說明,如系統(tǒng)概況焊傅,認證方式剂陡,錯誤碼等 狈涮。

另外文檔是以web形式展現(xiàn),所以只要有人知道這個鏈接鸭栖,就都可以在瀏覽器訪問 歌馍。

編寫文檔

編寫文檔同樣有兩種方式,分別是在本地編輯晕鹊,或者打開鏈接在瀏覽器中編輯 松却。無論哪種方式,保存成功后都會自動同步溅话,也就是所有人都能看到 晓锻。

本地編輯步驟:

  1. 點擊集合的右三角,會自動彈出RUN的窗口
  2. 選擇一個請求點擊后飞几,會出現(xiàn)兩個鏈接按鈕砚哆,分別是Add a description和Open in builder 。
  3. 點擊Add a description屑墨,這這里就可以填寫接口描述躁锁。

在線編輯步驟:

  1. 點擊集合的右三角,會自動彈出RUN的窗口
  2. 點擊View in web卵史,會在瀏覽器中自動打開該集合的web鏈接地址战转。
  3. 選擇其中請求,點擊Add a description .

以上兩種方式都可以給接口添加文檔描述程腹,且都支持markdown語法匣吊,編寫好的信息也能及時的文檔中看到,如下圖是給其中一個接口添加的文檔信息 寸潦。

一文帶你全面解析postman工具的使用(高級篇)

同時點擊Open in builder這個鏈接按鈕色鸳,也能直接打開對應(yīng)的請求 。

以下是打開的web在線文檔见转,在線文檔還有個比較實用的功能命雀,就是為每個請求自動生成不同語言的代碼,如果你正好對如何用代碼實現(xiàn)不太清楚斩箫,那么你就可以直接從這里拷貝

一文帶你全面解析postman工具的使用(高級篇)
一文帶你全面解析postman工具的使用(高級篇)

6.Mock服務(wù)

什么是Mock服務(wù) 吏砂?

正常情況下,前端需要調(diào)用后端的接口才能完成一個完整的功能實現(xiàn)乘客,但由于后端接口交付的延遲狐血,嚴(yán)重影響了工作效率,這時為了減少對后端接口的依賴易核,前端開發(fā)人員創(chuàng)建一個mock服務(wù)器匈织,以模擬每個請求對應(yīng)的響應(yīng)。開發(fā)人員更加模擬響應(yīng)進行接口調(diào)試,而無需增加后端 缀匕。在postman中也支持創(chuàng)建mock服務(wù)器纳决。

創(chuàng)建mock服務(wù)器

在postman中最常見創(chuàng)建mock服務(wù)的兩種方式:在運行面板中創(chuàng)建和通過new窗口創(chuàng)建 。

new窗口創(chuàng)建步驟

  1. 點擊左上角的New乡小,選擇彈出的窗口選擇Mock Server阔加。
  2. 需要為即將要創(chuàng)建的Mock Server , 可以從已有的選擇,也可以重新創(chuàng)建一個集合 满钟。
  3. 選擇對應(yīng)的mock名稱胜榔,版本標(biāo)簽,環(huán)境等零远,點擊Create Mock Server 苗分。
一文帶你全面解析postman工具的使用(高級篇)

面板中創(chuàng)建

  1. 選擇集合,點擊右三角牵辣,在彈出的面板中選擇Mocks,點擊Create a mock Server.
  2. 在彈出的界面中輸入mock server name ,version tag , environment,點擊Create mock server 摔癣。完成創(chuàng)建

以上兩種方式創(chuàng)建,最終結(jié)果都會在mock標(biāo)簽中生成一個mock服務(wù)器的鏈接纬向,具體如下:

創(chuàng)建mock請求

上文我們提到過择浊,接口若不能準(zhǔn)時提供給前端人員,我們就需要模擬對應(yīng)的接口逾条,但是模擬接口前琢岩,我們先要確定好接口的請求方法,請求路徑师脂,返回狀態(tài)碼担孔,以及響應(yīng)數(shù)據(jù) 。至于請求傳遞的參數(shù)我們無需關(guān)注 吃警。所以無論通過何種工具去模擬糕篇,至少以上幾個參數(shù) 。

那么通過postman模擬請求酌心,就需要用到example.接下來我們就來了解下如何通過example模擬請求 拌消。

example功能入口

一文帶你全面解析postman工具的使用(高級篇)

通過example實現(xiàn)模擬請求步驟:

  1. 選擇一個請求,通過發(fā)送請求后安券,點擊Save Response中的Save as example墩崩。
  2. 這時會自動彈出一個tab頁,打開的這個頁面其實就是postman的example.也是我們要說的模擬請求 .
  3. 在彈出的example頁面侯勉,需要將請求方法鹦筹,請求路徑,響應(yīng)狀態(tài)碼及相應(yīng)數(shù)據(jù)填寫好 址貌,點擊右上角的Save Example盛龄。
  4. 保存成功后,就會在右上角能看到我們要保存的example了 。
  5. 以上步驟相當(dāng)于創(chuàng)建好了一個模擬請求了余舶,接下來我們就可以通過工具請求這個example(模擬請求)了 。在postman打開一個新的tab頁锹淌,請求方法填寫保存好的example的方法匿值,請求地址要填寫mock服務(wù)器地址+請求路徑,點擊Send.就會將預(yù)期結(jié)果返回 赂摆。
一文帶你全面解析postman工具的使用(高級篇)

7.監(jiān)控

postman的監(jiān)控挟憔,和Jenkins中設(shè)置的定時任務(wù)差不多,用于監(jiān)控接口的運行情況和性能 烟号。同樣的這個功能用于集合绊谭。你可以配置多長時間運行一次,到了時間點將自動遍歷集合中的每個請求汪拥。那么很明顯通過這個功能达传,真正地幫我們實現(xiàn)了自動化 。

創(chuàng)建監(jiān)視器

同樣的創(chuàng)建監(jiān)視器有兩種方法迫筑,分別是通過new創(chuàng)建和面板中創(chuàng)建 宪赶。 接下來就主要介紹下面板創(chuàng)建的步驟

面板創(chuàng)建實現(xiàn)步驟

  1. 選擇集合,點擊右三角脯燃,彈出的面板中選擇Monitors,點擊Create a monitor
  2. 在Configuration中配置環(huán)境搂妻,定時任務(wù),運行地區(qū)辕棚,以及設(shè)置其他偏好欲主,點擊Create后即創(chuàng)建了監(jiān)控。
一文帶你全面解析postman工具的使用(高級篇)
一文帶你全面解析postman工具的使用(高級篇)

查看監(jiān)視器

創(chuàng)建好的監(jiān)視器逝嚎,就是通過編輯查看監(jiān)視器中運行的數(shù)據(jù) 扁瓢。


8.連接數(shù)據(jù)庫

對于做接口測試,其中很重要的一個環(huán)節(jié)就是要連接數(shù)據(jù)庫 懈糯, 那么對于我們使用的postman而言涤妒,是否也可以進行連庫操作呢 ? 答案是肯定的 赚哗。這里就需要到一個插件:xmysql.

通過xmysql連庫后她紫,xmysql會將數(shù)據(jù)庫中所有表以REST風(fēng)格的接口形式生成 ,所以后續(xù)訪問某張表其實就是訪問的某個接口屿储,那么對于postman而言贿讹,其實也就是相當(dāng)于訪問了某個接口而已。

安裝

  1. 安裝nodejs: xmysql是由nodejs開發(fā)够掠,所以要先安裝它的運行環(huán)境民褂,下載地址:http://nodejs.cn/download/ 。安裝成功后需要驗證:在cmd窗口中輸入node -v,如果輸出node的版本信息,則證明安裝成功赊堪。
  2. 安裝xmysql:安裝成功nodejs后面殖,會自動安裝一個包管理工具npm(類似于python中的pip)。通過它就可以直接安裝xmysql哭廉。 打開cmd窗口輸入:npm install -g xmysql.

連接數(shù)據(jù)庫

xmysql命令參數(shù)介紹:

-h  連接數(shù)據(jù)庫主機名
-u  連接數(shù)據(jù)庫用戶名
-p  連接數(shù)據(jù)庫密碼
-d  連接數(shù)據(jù)庫名
-r  連接數(shù)據(jù)庫輸入的主機名脊僚,無這個選項默認為localhost
-n  連接這個服務(wù)設(shè)置的端口,無這個選項默認為3000

舉例:

> xmysql -u username -p password -d databasename

連接本地數(shù)據(jù)庫的示例遵绰,注意輸入這條命令后辽幌,xmysql會以服務(wù)的形式啟動 。所以當(dāng)xmysql被停止掉椿访,那么連庫操作也會失敗 乌企。

一文帶你全面解析postman工具的使用(高級篇)

數(shù)據(jù)庫的基本操作

以下是我其中一張表t_book的數(shù)據(jù),我們通過xmysql來對這張表分別進行增成玫,刪加酵,改,查 梁剔。再次強調(diào)虽画,無論何種操作,在postman中只是請求的是接口 荣病。

一文帶你全面解析postman工具的使用(高級篇)

需求1:查詢t_book表的所有數(shù)據(jù)码撰。

GET http://localhost:3000/api/t_book
一文帶你全面解析postman工具的使用(高級篇)

需求2:查詢t_book表title為三國演義的數(shù)據(jù)。

GET http://localhost:3000/api/t_book?_where=(title,eq,三國演義)

需求3:向t_book表插入一條數(shù)據(jù)

插入數(shù)據(jù)需要先知道表結(jié)構(gòu)个盆,t_book的表結(jié)構(gòu)如下圖脖岛,那么向這張表插入數(shù)據(jù),其實就是將這些字段作為參數(shù)輸入即可 颊亮。它支持兩種請求柴梆,表單和json都可以請求

postman中是這樣請求的,如果是修改數(shù)據(jù)直接把POST修改成PUT就可以了终惑。


需求4:刪除其中一條數(shù)據(jù)绍在。

DELETE http://localhost:3000/api/t_book/5   //5是表中的ID值

xmysql用法

關(guān)系表

xmysql自動識別外鍵關(guān)系并提供GET API。

/api/blogs/103/comments

例如:blogs是父表雹有,comments是子表偿渡。API調(diào)用將產(chǎn)生blogs主鍵103的所有注釋。

分頁

p和_size

p表示頁面霸奕,size表示每頁的數(shù)據(jù)量

默認情況下溜宽,每個GET請求在一個表上返回20條記錄,最多返回100條記錄质帅。

/api/payments?_size=50
/api/payments?_p=2
/api/payments?_p=2&_size=50

當(dāng)_size大于100時-記錄數(shù)默認為100(即最大)

當(dāng)_size小于或等于0時-記錄數(shù)默認為20(即最小值)

排序

ASC(升序)

/api/payments?_sort=column1

例如:按column1升序排序

降序

/api/payments?_sort=-column1

例如:按column1降序排序

多個字段排序

/api/payments?_sort=column1,-column2

例如:按column1升序排序适揉,按column2降序排序

列過濾/字段

/api/payments?_fields=customerNumber,checkNumber

例如:在每條記錄的響應(yīng)中僅獲取customerNumber和checkNumber

/api/payments?_fields=-checkNumber

例如:獲取表行中的所有字段留攒,但不獲取checkNumber

運算符

比較運算符

eq      -   '='         -  (colName,eq,colValue)
ne      -   '!='        -  (colName,ne,colValue)
gt      -   '>'         -  (colName,gt,colValue)
gte     -   '>='        -  (colName,gte,colValue)
lt      -   '<'         -  (colName,lt,colValue)
lte     -   '<='        -  (colName,lte,colValue)
is      -   'is'        -  (colName,is,true/false/null)
in      -   'in'        -  (colName,in,val1,val2,val3,val4)
bw      -   'between'   -  (colName,bw,val1,val2) 
like    -   'like'      -  (colName,like,~name)   note: use ~ in place of % 
nlike   -   'not like'  -  (colName,nlike,~name)  note: use ~ in place of %

使用比較運算符

/api/payments?_where=(checkNumber,eq,JM555205)~or((amount,gt,200)~and(amount,lt,2000))

邏輯運算符

~or     -   'or'
~and    -   'and'
~xor    -   'xor'

使用邏輯運算符

例如:簡單的邏輯表達式

/api/payments?_where=(checkNumber,eq,JM555205)~or(checkNumber,eq,OM314933)

例如:復(fù)雜的邏輯表達式

/api/payments?_where=((checkNumber,eq,JM555205)~or(checkNumber,eq,OM314933))~and(amount,gt,100)

例如:具有排序(sort),分頁(p)嫉嘀,列過濾(_fields)的邏輯表達式

/api/payments?_where=(amount,gte,1000)&_sort=-amount&p=2&_fields=customerNumber

例如:使用_where的行過濾器也可用于關(guān)系路由URL炼邀。

/api/offices/1/employees?_where=(jobTitle,eq,Sales%20Rep)

查找一條數(shù)據(jù)

/api/tableName/findOne?_where=(id,eq,1)

與list相似,但僅返回前一個結(jié)果吃沪。與_where結(jié)合使用 ??

計數(shù)

/api/tableName/count

返回表中的行數(shù) ??

判斷是否存在

/api/tableName/1/exists

根據(jù)記錄是否存在返回真或假 ??

按查詢參數(shù)分組

/api/offices?_groupby=country

例如:選擇國家/地區(qū)汤善,從辦事處按國家/地區(qū)計數(shù)(*)

/api/offices?_groupby=country&_having=(_count,gt,1)

例如:SELECT country,count(1)as _count FROM office GROUP BY country_count> 1

以API分組

/api/offices/groupby?_fields=country

例如:選擇國家/地區(qū)票彪,從辦事處按國家/地區(qū)計數(shù)(*)

/api/offices/groupby?_fields=country,city

例如:從辦事處選擇國家,城市不狮,計數(shù)(*)GROUP BY國家降铸,城市

/api/offices/groupby?_fields=country,city&_having=(_count,gt,1)

例如:SELECT country,city摇零,count(*)as _count FROM office GROUP BY country_city _count> 1

分組依據(jù)推掸,排序依據(jù)

/api/offices/groupby?_fields=country,city&_sort=city

例如:通過辦事處選擇國家,城市驻仅,數(shù)量(*)谅畅,按國家,城市分組噪服,按城市ASC

/api/offices/groupby?_fields=country,city&_sort=city,country

例如:從辦事處選擇國家毡泻,城市,數(shù)量(*)按國家分組粘优,按城市ASC訂購仇味,國家ASC

/api/offices/groupby?_fields=country,city&_sort=city,-country

例如:從辦事處選擇國家,城市雹顺,計數(shù)(*)按國家分組丹墨,城市按城市ASC,國家DESC嬉愧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贩挣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子没酣,更是在濱河造成了極大的恐慌王财,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件四康,死亡現(xiàn)場離奇詭異搪搏,居然都是意外死亡,警方通過查閱死者的電腦和手機闪金,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門疯溺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來论颅,“玉大人,你說我怎么就攤上這事囱嫩∈逊瑁” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵墨闲,是天一觀的道長今妄。 經(jīng)常有香客問我,道長鸳碧,這世上最難降的妖魔是什么盾鳞? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮瞻离,結(jié)果婚禮上腾仅,老公的妹妹穿的比我還像新娘。我一直安慰自己套利,他們只是感情好推励,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肉迫,像睡著了一般验辞。 火紅的嫁衣襯著肌膚如雪篷帅。 梳的紋絲不亂的頭發(fā)上峭沦,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音间聊,去河邊找鬼格侯。 笑死鼻听,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的联四。 我是一名探鬼主播撑碴,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朝墩!你這毒婦竟也來了醉拓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤收苏,失蹤者是張志新(化名)和其女友劉穎亿卤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹿霸,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡排吴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了懦鼠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钻哩。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡屹堰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出街氢,到底是詐尸還是另有隱情扯键,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布珊肃,位于F島的核電站荣刑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伦乔。R本人自食惡果不足惜厉亏,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烈和。 院中可真熱鬧叶堆,春花似錦、人聲如沸斥杜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔗喂。三九已至,卻和暖如春高帖,著一層夾襖步出監(jiān)牢的瞬間缰儿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工散址, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乖阵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓预麸,卻偏偏與公主長得像瞪浸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吏祸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容