一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python接口測(cè)試- requests 發(fā)送 post 請(qǐng)求

 禁忌石 2022-03-06

貓與測(cè)試

12019.10.31 09:15:40

POST 請(qǐng)求用于向服務(wù)器發(fā)送數(shù)據(jù)。與 get 相比更安全,同時(shí) post 請(qǐng)求一般會(huì)帶來(lái)數(shù)據(jù)的更改。

GET 請(qǐng)求不論我們?cè)趺礃?gòu)造,最終都是通過(guò) URL 向服務(wù)器傳遞數(shù)據(jù),而 post 通過(guò)消息體(報(bào)文主體)發(fā)送請(qǐng)求。

在發(fā)送 post 請(qǐng)求的時(shí)候,我們需要關(guān)注一下 HTTP 請(qǐng)求的頭部信息,特別是Content-Type,這是用來(lái)告訴服務(wù)器請(qǐng)求中包含的數(shù)據(jù)類型。這會(huì)影響服務(wù)器如何提取數(shù)據(jù)。

常見(jiàn)的Content-Type如下:

  1. application/x-www-form-urlencoded
    這是最常見(jiàn)的數(shù)據(jù)類型,通常表明請(qǐng)求的數(shù)據(jù)類型是鍵值對(duì)類型,也就是頁(yè)面 form 表單數(shù)據(jù),如:

    username=nemo&password=123456
  2. application/json
    這意味著請(qǐng)求的數(shù)據(jù)類型是 Json 格式的數(shù)據(jù):

    {"username":"nemo", "password":"123456"}
  3. multipart/form-data
    multipart/form-data 通常用于上傳文件。

  4. application/xml
    這表明數(shù)據(jù)格式為 xml 格式。

前兩種是較為常見(jiàn)的數(shù)據(jù)類型,一般默認(rèn)情況下都是使用application/x-www-form-urlencoded, 在 requests 的 post 請(qǐng)求中以此為默認(rèn)的數(shù)據(jù)類型。

由于之前提供的免費(fèi) API 中 post 請(qǐng)求基本上都沒(méi)法使用,我們還是采用之前在 postman 中使用過(guò)的 showdoc 小項(xiàng)目中的登錄為例,來(lái)演示如何發(fā)送 post 請(qǐng)求。

首先,我們先登錄后抓包:


image


通過(guò)抓包可以獲取到我們需要的數(shù)據(jù):

  • 請(qǐng)求 url

  • content-type:application/x-www-form-urlencoded

  • 請(qǐng)求報(bào)文數(shù)據(jù):username=showdoc&password=123456&v_code=

import requests

url = 'http://127.0.0.1/showdoc/server/index.php?s=/api/user/login'# 以字典的形式構(gòu)造數(shù)據(jù)data = {
    'username': 'showdoc',
    'password': '123456'}# 與 get 請(qǐng)求一樣,r 為響應(yīng)對(duì)象r = requests.post(url, data=data)# 查看響應(yīng)結(jié)果print(r.json())

由于 requests 默認(rèn)以 content-type:application/x-www-form-urlencoded 發(fā)送 post 請(qǐng)求,所以這里我們不需要特殊處理。

同樣,我們可以通過(guò)響應(yīng)對(duì)象 r 查看請(qǐng)求和響應(yīng)中的其他內(nèi)容:

查看實(shí)際的請(qǐng)求數(shù)據(jù):

print(r.request.body)## username=showdoc&password=123456

查看響應(yīng)中的 cookie:

print(r.cookies)## <RequestsCookieJar[<Cookie cookie_token=...1b4181689f for 127.0.0.1/>]>

這里的 cookie 是服務(wù)端返回的,會(huì)用在后續(xù)的請(qǐng)求中,如果需要獲取:

print(r.cookies.get('cookie_token'))## 2e7afd2de4dfdab4187b3587f6d532654f854b14f91b4181689f0ddd2fdfa0b9

發(fā)送 json 格式的數(shù)據(jù)

requests 默認(rèn)使用 form 表單的形式發(fā)送數(shù)據(jù),那如果服務(wù)器要求使用 json 格式呢?

有兩種方法可以處理:

  1. 修改請(qǐng)求頭部,傳入自定義的 content-type

  2. 通過(guò)參數(shù) json 傳遞數(shù)據(jù)

修改請(qǐng)求頭部:

import requests

url = 'http://127.0.0.1/showdoc/server/index.php?s=/api/user/login'# 注意這里必須以json字符串構(gòu)造數(shù)據(jù)data = '''
{
    "username": "showdoc",
    "password": "123456"
}
'''headers = {'content-type': 'application/json'}# 與 get 請(qǐng)求一樣,r 為響應(yīng)對(duì)象r = requests.post(url, data=data, headers=headers)# 查看響應(yīng)結(jié)果print(r.json())# 查看請(qǐng)求頭部print(r.request.headers)## 你可以看看 content-type 字段

直接使用 json 參數(shù)

import requests

url = 'http://127.0.0.1/showdoc/server/index.php?s=/api/user/login'# 這里依然以字典的形式構(gòu)造數(shù)據(jù)data = {
    'username': 'showdoc',
    'password': '123456'}# 與 get 請(qǐng)求一樣,r 為響應(yīng)對(duì)象r = requests.post(url, json=data)# 查看響應(yīng)結(jié)果print(r.json())# 查看請(qǐng)求頭部print(r.request.headers)## 你可以看看 content-type 字段

使用 json 參數(shù)傳遞,除了會(huì)增加 content-type 為 application/json 外,還會(huì)將 data 字典自動(dòng)編碼為 json 格式。

而如果我們自定義 content-type 的方式還需要自己將數(shù)據(jù)構(gòu)造成 json 格式的數(shù)據(jù)

所以 ,明顯直接使用第二種方式更方便,所以強(qiáng)烈推薦直接用第二種方式。

當(dāng)然如果涉及到非 form 和 json 格式的數(shù)據(jù),就必須要用第一種方式自己構(gòu)造 content-type 了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    精品人妻一区二区三区四区久久 | 美女极度色诱视频在线观看| 爱在午夜降临前在线观看| 精品日韩av一区二区三区| 亚洲中文在线男人的天堂| 老鸭窝老鸭窝一区二区| 亚洲中文字幕高清视频在线观看 | 激情视频在线视频在线视频 | 男人大臿蕉香蕉大视频 | 冬爱琴音一区二区中文字幕| 欧美加勒比一区二区三区| 日本少妇aa特黄大片| 欧美日韩国产亚洲三级理论片| 欧美日韩精品视频在线| 五月婷日韩中文字幕四虎| 蜜臀人妻一区二区三区| 九九九热视频免费观看| 中文字幕日韩精品人一妻| 五月婷日韩中文字幕四虎| 免费亚洲黄色在线观看| 日本精品中文字幕在线视频| 国产精品流白浆无遮挡| 成在线人免费视频一区二区| 视频在线观看色一区二区| 在线欧洲免费无线码二区免费| 欧洲亚洲精品自拍偷拍| 国产a天堂一区二区专区| 九九热九九热九九热九九热| 日韩高清一区二区三区四区| 美国女大兵激情豪放视频播放| 视频一区二区黄色线观看| 美女被草的视频在线观看| 欧美日韩综合在线精品| 视频一区二区三区自拍偷| 日韩黄片大全免费在线看| 久草国产精品一区二区| 国产二级一级内射视频播放| 国产精品久久精品国产| 日本国产欧美精品视频| 亚洲一区二区三区精选| 成人精品国产亚洲av久久|