Python接口測試- requests 發(fā)送 get 請求

get 請求我們選擇 騰訊天氣 接口。首先我們看文檔如下:


這里就相當于是接口文檔,從這里我們可以獲取到:請求方法、url、請求參數(shù)。

首先我們在 Postman 中嘗試一下(Postman 很容易入手,可以用來輔助來學習):



通過 Postman ,我們能夠正常訪問數(shù)據(jù)。

接下來使用 requests 庫:

import requests
from pprint import pprint

# url
url = 'https://wis.qq.com/weather/common?source=xw&weather_type=forecast_1h|forecast_24h|index|alarm|limit|tips'
# 構造數(shù)據(jù),requests 全系列支持字典類型的數(shù)據(jù)
payload = { 
    # 參考文檔中的參數(shù)部分,逐一構造
    'province': '四川',
    'city': '成都',
    'county': '武侯區(qū)'
}
# 發(fā)送 get 請求,返回結果是服務端的響應數(shù)據(jù)
r = requests.get(url, params=payload)
# 獲取響應報文體
# 1.以文本方式獲取報文主體
pprint(r.text)
# 2. 以字典格式獲取報文主體(僅針對返回是 json 格式的數(shù)據(jù))
pprint(r.json())
# 3. 以二進制方式獲取報文主體(視頻、圖片等)
pprint(r.content)

其實上面的代碼,發(fā)送請求就一句話:

r = requests.get(url, params=payload)

其他代碼都是在構造數(shù)據(jù),獲取響應。

當然 get 請求本身參數(shù)都在 url 中,我們也可以將參數(shù)構造在 url 中:

# url,注意參數(shù)我們通過&和鍵值對的形式放在了 url 中
url = 'https://wis.qq.com/weather/common?source=xw&weather_type=forecast_1h|forecast_24h|index|alarm|limit|tips&province=四川&city=成都&county=武侯區(qū)'

# 發(fā)送 get 請求,返回結果是服務端的響應數(shù)據(jù)
r = requests.get(url)
# 這里的響應是 json 格式的數(shù)據(jù),我們直接通過 json() 方法查看
pprint(r.json())

不管使用字典構造參數(shù),亦或者是直接拼接在 url 中,最終都會被 requests 自動為我們轉碼為標準的 url 格式,我們可以通過 r.request.url查看請求中的實際 url 。

print(r.request.url)
## https://wis.qq.com/weather/common?...&county=%E6%AD%A6%E4%BE%AF%E5%8C%BA

關于響應對象中的其他屬性,將在后面專門講解。

關于header

一般我們是不需要專門處理請求的 header 信息,除非其中涉及到了認證的 token、或者 cookie 等數(shù)據(jù)需要同時傳遞給服務器。這得益于 requests 優(yōu)秀的設計,很多常用的頭部字段已由 requests 幫我們自動處理了。

requests 中關于 header 的處理,與參數(shù)很像,都是通過字典來構造。

比如,我這里傳遞用于標識請求數(shù)據(jù)類型的 content-type字段:

headers = {
    # 這里的頭部字段不需要區(qū)分大小寫
    'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
    }
r = requests.get(url, headers=headers)

獲取到響應的數(shù)據(jù),說明我們的請求發(fā)送成功啦,后面就應該是對結果的斷言咯。不過先穩(wěn)一下,我們先把其他的方法了解一下。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容