request 里面參數設置 (有空瞄下)


Requests 是用python語言編寫的第三方庫,基於 urllib,采用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,完全滿足 HTTP 測試需求,多用於接口測試,為了日后應用至工作中我便開始了學習
參考出處:https://www.jianshu.com/p/d78982126318

首先,安裝第三方庫

pip install requests

其次,使用requests

import requests 

Request庫的一些常用方法

1.requests.request(method,url,**kwargs)

構造並發送一個Request對象,返回一個Response對象,支撐各方法的基礎方法

method:新建Request對象要使用的HTTP方法,包括:GET,POST,PUT,DELETE等
url:新建Request對象的URL鏈接
**kwargs:13個控制訪問的可選參數

(1)params:字典或字節序列,作為參數增加到url中

paramsValue={'key1':'value1','key2':'value2'} r=requests.request('GET','http://www.baidu.com',params=paramsValue) print(r.url) #執行結果:http://www.baidu.com/?key1=value1&key2=value2;若paramsValue為字符串,結果相仿 

(2)data:字典、字節序列,文件,作為Request對象body的內容

#字典 dataDicValue={'key1':'value1','key2':'value2'} r=requests.request('GET','http://www.baidu.com',data=dataDicValue) #字節序列 dataStrValue='test' r=requests.request('GET','http://www.baidu.com',data=dataStrValue) #文件 dataFileValue={'file':open('test.csv','rb')} r=requests.request('POST','http://www.baidu.com',data=dataFileValue) 

(3)json:JSON格式的數據,作為Request對象body的內容

jsonValue={'key1':'value1','key2':'value2'} r=requests.request('POST','http://www.baidu.com',json=jsonValue) 

(4)headers:字典格式,HTTP請求頭,作為Request對象Header的內容

headerValue={'user-agent': 'Chrome/10'} r=requests.request('POST','http://www.baidu.com',headers=headerValue) print(r.headers) #{'Accept-Ranges': 'bytes', 'Cache-Control': 'max-age=86400', 'Connection': 'Keep-Alive', 'Content-Encoding': 'gzip', 'Content-Length': '4867', 'Content-Type': 'text/html', 'Date': 'Wed, 15 Aug 2018 10:22:42 GMT', 'Etag': '"3dcd-560eb5cea6700"', 'Expires': 'Thu, 16 Aug 2018 10:22:42 GMT', 'Last-Modified': 'Fri, 22 Dec 2017 10:34:36 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM "', 'Server': 'Apache', 'Set-Cookie': 'BAIDUID=6AE11C63536CF472F9B403B1BE467161:FG=1; expires=Thu, 15-Aug-19 10:22:42 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1', 'Vary': 'Accept-Encoding,User-Agent'} 

(5)cookies:字典或CookieJar,Request中的cookie

#字典 cookieDicValue={'key1':'value1','key2':'value2'} r=requests.request('POST','http://www.baidu.com',cookies=cookieDicValue) print(r.cookies) #<RequestsCookieJar[]> #CookieJar cookiesJarValue=cookiejar.CookieJar() r=requests.request('POST','http://www.baidu.com',cookies=cookiesJarValue) print(r.cookies) #<RequestsCookieJar[]> 

(6)files:字典,形式為{filename: fileobject},表示要上傳的多個部分

filesValue = {'file': open('test.csv', 'rb')} r = requests.request('POST', 'http://www.baidu.com', files=filesValue) 

(7)auth:Auth 句柄或 (user, pass) 元組

#Auth authBasicValue=HTTPBasicAuth('username','password') r = requests.request('POST', 'http://www.baidu.com', auth=authBasicValue) #(user,pass)元組 authTupValue=('username','password') r=requests.request('POST','http://www.baidu.com',auth=authTupValue) 

(8)timeout:等待服務器數據的超時限制,是一個浮點數,或是一個(connect timeout, read timeout) 元組

#浮點數(單位秒) timeoutFloatValue=12 r=requests.request('POST','http://www.baidu.com',timeout=timeoutFloatValue) #(connect timeout, read timeout) 元組; #connect timeout:建立連接所用的時間;適用於網絡狀況正常的情況下,兩端所用的時間 #readtimeout:建立連接后從服務器讀取到可用資源所用的時間;正常情況下,當我們發出請求時可以收到請求的結果,也就是頁面上展示的內容,但是當網絡狀況很差的時候,就會出現頁面上無法展示出內容的情況。另外當我們使用爬蟲或者其他全自動的程序時,無法判斷當前的網絡狀況是否良好,此時就有了ReadTimeout的用武之地了,通過設置ReadTimeout參數 #注意:在我們使用需要設置這兩項參數的服務或程序時,應該對兩項參數一起設置。 一般而言兩項參數的數值可以設置成一樣的,但可以把ReadTimeout設置的長一點,ConnectTimeout可以相對比較短,這是源於我們的網絡狀況一般較為穩定,連接時很少出現問題,但是讀取時因為數據下載時的網絡波動,出狀況的可能性更大一些。 timeoutTupValue=(10,25) r=requests.request('POST','http://www.baidu.com',timeout=timeoutTupValue) 

(9)allow_redirects:True/False,默認為Ture,重定向開關,為True時表示允許POST/PUT/DELETE方法重定向

#禁止重定向 r=requests.request('POST','http://www.baidu.com',allow_redirects=False) 

(10)proxies:字典類型,用於將協議映射為代理的URL

#以下是根據不同協議選擇不同代理,也可以使用list+隨機方式使用多個代理地址訪問URL poxiesValue={'http':'xxx.xxx.xxx.xxx:xx','https':'xxx.xxx.xxx.xxx:xx'} r=requests.request('POST','http://www.baidu.com',poxies=poxiesValue) 

(11)verify:True/False,默認為True,認證SSL證書開關;為True時會驗證SSL證書,也可以使用cert參數提供一個CA_BUNDLE路徑;為False時,忽略SSL驗證

#忽略SSL驗證 r=requests.request('POST','http://www.baidu.com',varify=False) 

(12)stream:True/False,默認為True,獲取body立即下載開關,為False會立即下載響應頭和響應體;為True時會先下載響應頭,當Reponse調用content方法時才下載響應體

# stream為True時下載步驟 #stream設置為True,直接下載響應頭 r=requests.request('POST','http://www.baidu.com',stream=True) #調用content方法下載響應體 r.content 

(13)cert:為字符串時應是 SSL 客戶端證書文件的路徑(.pem格式,文件路徑包含密鑰和證書),如果是元組,就應該是一個(‘cert’, ‘key’) 二元值對

#文件路徑 requests.request('POST','http://www.baidu.com',cert='/True_path/server.pem') #元組 certTupValue=('/value/value.cert','/value/key') requests.request('POST','http://www.baidu.com',cert=certTupValue) 

2.requests.get(url, params=None, **kwargs)
請求獲取URL位置的資源

url:新建Request對象的URL鏈接
params:字典或字節序列,作為參數增加到url中
**kwargs:12個控制訪問的可選參數(除params外其他同1)

3.requests.head(url, **kwargs)
請求獲取URL位置資源的響應消息報告,即獲得該資源的響應的頭部信息

url:新建Request對象的URL鏈接
**kwargs:13個控制訪問的參數(同1)

4.requests.post(url, data=None, json=None, **kwargs)
請求向URL位置的資源后附加新的數據

url:新建Request對象的URL鏈接
data:字典、字節序列,文件,作為Request對象body的內容
json:JSON格式的數據,作為Request對象body的內容
**kwargs:11個控制訪問參數(除data,json外其他同1)

5.requests.put(url, data=None, **kwargs)
請求向URL位置存儲的一個資源,覆蓋原URL位置的資源

url:新建Request對象的URL鏈接
data:字典、字節序列,文件,作為Request對象body的內容
**kwargs:12個控制訪問參數(除data外其他同1)

6.requests.patch(url, data=None, **kwargs)
請求局部更新URL位置的資源,即改變該處資源的部分內容

url:新建Request對象的URL鏈接
data:字典、字節序列,文件,作為Request對象body的內容
**kwargs:12個控制訪問參數(除data外其他同1)

7.requests.delete(url, **kwargs)
請求刪除URL位置存儲的資源

url:新建Request對象的URL鏈接
**kwargs:13個控制訪問參數(同1)



作者:nzdnllm
鏈接:https://www.jianshu.com/p/c7b25bc3520e
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM