Python中的Requests庫

什么是Python中的Requests模塊?

requests模塊是Python中廣泛使用的庫,用于簡化HTTP請求的發送和響應處理。無論是調用API、下載文件、處理復雜會話管理,requests都能提供很好的解決方案。

一、基礎使用方法

1.GET請求

GET請求用于獲取服務器資源,如:獲取商品列表。我們就可以通過傳遞查詢參數在URL中,服務器根據你傳的參數返回特定的數據。

import requestsurl = 'http://127.0.0.1:8787/products'
params = {'category':'electronics'}response = requests.get(url,params=params)#輸出返回的JSON數據
print(response.json())

2.POST請求

接口測試中,POST請求經常用于發送數據。假設我們測試一個登錄接口,需要在報文body處傳遞用戶名和密碼作為請求參數。

ipmort requests#設置請求的URL和參數
url = 'http://127.0.0.1:8787/login'
headers = {'Content-Type':'application/x-www-form-urlencoded'}
data = {'username':'testname','password','testpass'}#發起POST請求
response = requests.post(url,headers=headers,data=data)#查看響應狀態碼和內容
print(response.status_code) #200,就表示請求成功
print(response.text) #返回服務器響應的文本內容

3.GET和POST請求的區別

在實際的項目中,選擇POST還是GET取決于數據傳遞的需求:
GET請求:獲取服務器的資源,安全且冪等,參數通過URL傳遞。

POST請求:提交或修改服務器的資源,不安全且不冪等,參數通過報文Body傳遞。

注意:這里的安全不是指的數據傳遞時是否容易被竊取,而是能否修改服務器資源。

二、數據傳遞格式

1.表單提交與JSON數據

POST請求的數據傳輸方式主要有兩種:表單數據和JSON數據

表單提交:

data = {'username':'testuser','password':'testpass'}
response = requests.post(url,data=data)

JSON提交:

json_data = {'username':'testuser','password':'testpass'}
response = requests.post(url,json=json_data)

看起來沒什么區別,但是不同的接口通常有特定的數據格式要求,測試時需要根據接口文檔確定數據的傳輸格式。

三、會話管理與持久性連接

在一些需要多次請求的場景下,使用會話對象Session可以管理持久性連接,避免重復登錄的操作。尤其是設計用戶登錄、會話保持的場景,Session的使用至關重要。

#創建會話對象
session = requests.Session()#使用會話對象進行登錄
login_url = 'http://127.0.0.1:8787/login'
session.post(login_url,data={'username':'testname','password':'testpass'})#登錄后保護受保護的資源
protected_url = 'http://127.0.0.1:8787/protected'
response = session.get(protected_url)print(response.text)

四、處理響應結果

在自動化測試中,我們不僅要關心接口的響應狀態碼,還需要處理接口返回的數據格式。requests支持多種返回格式.

文本類型:

print(response.text)

JSON類型:

print(response.json())

二進制內容:

print(response.content) #獲取二進制內容,如圖片或文件

注意:如果遇到編碼問題,可以通過response.encoding或手動解碼方式來處理

五、應對HTTPS證書驗證

在測試HTTPS接口時,可能會遇到證書驗證的錯誤,尤其是在開發環境下。可以通過以下方式禁用證書驗證。

 response = requests.get(url,verify=False)

六、錯誤處理與異常捕獲

requests提供了強大的異常處理機制,在測試過程中可以捕獲網絡錯誤或超時問題

try:response = requests.get(url,timeout=5)response.raise_for_status()
except requests.exceptions.HTTPError as heep_err:print(f'HTTP error occurred:{http_err}')
except requests.exceptions.RequestException as err:print(f'Other error occurred:{err}')

參考文檔:Requests: HTTP for Humans? — Requests 2.32.3 documentation

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74733.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74733.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

復習MySQL20250327

第一章 基本操作 一、管理數據庫 難點:創建數據庫 輸入cmd的MySQL安裝路徑C:\Program Files\MySQL\MySQL Server 8.0\bin 1.查看所有數據庫 show databases; 2.創建數據庫 create database hsusers default charset utf8 collate utf8_general_ci;create data…

谷歌推出Gemini實時AI視頻功能,開啟智能交互新體驗

3月24日,谷歌發言人亞歷克斯約瑟夫向媒體證實,谷歌已開始向 Gemini Live 推出新的人工智能功能。這些功能使 Gemini 能夠“看到”用戶的屏幕內容,或通過智能手機攝像頭獲取畫面,并實時回答與之相關的問題。這一創新標志著人工智能…

Windows 新型零日漏洞:遠程攻擊可竊取 NTLM 憑證,非官方補丁已上線

近日,安全研究人員披露了一個新型 Windows 零日漏洞,影響從Windows 7和Server 2008 R2到最新Windows 11 v24H2及Server 2025的所有Windows操作系統版本。攻擊者只需誘使用戶在Windows資源管理器中查看惡意文件,即可利用該零日漏洞竊取NTLM&am…

一款超級好用且開源免費的數據可視化工具——Superset

認識Superset 數字經濟、數字化轉型、大數據等等依舊是如今火熱的領域,數據工作有一個重要的環節就是數據可視化。 看得見的數據才更有價值! 現如今依舊有多數企業號稱有多少多少數據,然而如果這些數據只是呆在冷冰冰的數據庫或文件內則毫無…

作業14 (2023-05-22_const修飾指針)

第1題/共5題【單選題】 C程序常見的錯誤分類不包含:( ) A.編譯錯誤 B.鏈接錯誤 C.棧溢出 D.運行時錯誤 回答正確 答案解析: 棧溢出是運行時錯誤的一種,因此C程序不會將棧溢出錯誤單獨列出來,棧溢出包含在運行時錯誤中。 因此:選擇C 第2題/共5題【單選題】 以下關于…

《Tr0ll2 靶機滲透實戰:弱口令+SUID+兩種緩沖區溢出+ 提權完整+fcrackzip暴力破解+shellshock漏洞+臟牛三種root提權復盤》

Tr0ll2 1、主機發現 arp-scan -l 2、端口掃描 nmap -sS -sV 192.168.66.181 nmap -sS -A -T4 -p- 192.168.66.181 nmap --scriptvuln 192.168.66.181PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (…

redis常用部署架構之redis分片集群。

redis 3.x版本后開始支持 作用: 1.提升數據讀寫速度 2..提升可用性 分片集群就是將業務服務器產生的數據儲存在不同的機器上。 redis分片集群的架構 如上圖所示,會將數據分散存儲到不同的服務器上,相比于之前來說,redis要處…

分布式數據庫介紹

分布式數據庫介紹 一、定義與核心概念 分布式數據庫是一種在物理上分散存儲、邏輯上統一管理的數據管理系統,其核心特征包括數據分布性、邏輯關聯性、場地透明性和可擴展性。根據最新定義,分布式數據庫需具備分布式事務處理能力、平滑擴展能力&#xf…

MybatisPlus(SpringBoot版)學習第五講:條件構造器和常用接口

目錄 1.wrapper介紹 2.QueryWrapper 2.1 例1:組轉查詢條件 Compare Nested Join Func 2.2 例2:組裝排序條件 2.3 例3:組裝刪除條件 2.4 例4:條件的優先級 2.5 例5:組裝select子句 2.6 例6:實現子查…

OkHttp 的證書設置

在 Android 開發中,通過 OkHttp 自定義 SSLSocketFactory 和 X509TrustManager 可以有效增強 HTTPS 通信的安全性,防止中間人攻擊(如抓包工具 Charles/Fiddler 的攔截)。以下是實現防抓包的關鍵技術方案: 一、Okhttp設…

計算機視覺算法實戰——手術導航:技術、應用與未來

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??? ????????? ?? 1. 手術導航中的計算機視覺:領域介紹 計算機視覺在手術導航領域的應用代表了現代醫學與人工智…

【科研繪圖系列】R語言繪制PCA與變量的相關性散點圖(scatter plot)

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹加載R包數據下載導入數據畫圖輸出圖片系統信息介紹 【科研繪圖系列】R語言繪制PCA與變量的相關性散點圖(scatter plot) 加載R包 library(tidyverse) library(ggpubr)數據下載 …

深度解析Spring Boot可執行JAR的構建與啟動機制

一、Spring Boot應用打包架構演進 1.1 傳統JAR包與Fat JAR對比 傳統Java應用的JAR包在依賴管理上存在明顯短板,依賴項需要單獨配置classpath。Spring Boot創新的Fat JAR(又稱Uber JAR)解決方案通過spring-boot-maven-plugin插件實現了"…

安科瑞微電網能量管理控制箱,光伏發電的守護者

安科瑞顧強 隨著工業的發展,很多用電設備和工廠設備采用直流系統供電,直流系統的正極和負極不接地。對于不接地(IT)配電系統,應該進行絕緣電阻的監控以保證供電系統的安全運行。 AIM-D100-TS 系列直流絕緣監測儀可以…

[計算機網絡]網絡I/O模型

歡迎來到啾啾的博客🐱。 這是一個致力于構建完善的Java程序員知識體系的博客📚,記錄學習的點滴,分享工作的思考、實用的技巧,偶爾也分享一些雜談💬。 歡迎評論交流,感謝您的閱讀😄。…

Vue中使用JsonView進行JSON數據展示

前言 最近在開發公司的管理系統的操作日志模塊,要查看某條操作日志的請求參數,要將請求的參數以 JSON 格式的形式展示出來,于是用到了Vue-JSON-Viewer 這個插件。 一、Vue-JSON-Viewer 基礎入門 插件簡介 Vue-JSON-Viewer 是一個用于在Vue項…

vue vue3 走馬燈Carousel

背景: 在項目中需要展示多張圖片,但在頁面上只有一張圖片的有限位置,此時考慮使用輪播圖實現多張圖片的展示。element組件官網有走馬燈Carousel的組件詳細介紹。 實現效果: 官網鏈接:點擊跳轉 核心代碼: …

重學vue3(三):vue3基本語法及使用

組合式 API是vue3 的核心特性&#xff0c;替代 Vue2 的選項式 API&#xff0c;強調邏輯復用和代碼組織。基本語法如下&#xff1a; <script setup> import { ref, reactive, computed, onMounted } from vue;// 1. 響應式數據 const count ref(0); // 基本類…

Spring Boot分布式項目異常處理實戰:從崩潰邊緣到優雅恢復

當單體應用拆分成分布式系統&#xff0c;異常就像被打開的潘多拉魔盒&#xff1a;RPC調用超時、分布式事務雪崩、第三方接口突然罷工…在最近的電商大促中&#xff0c;我們的系統就經歷了這樣的至暗時刻。本文將用真實代碼示例&#xff0c;展示如何構建分布式異常處理體系。 一…

導出sql命令

除了之前提到的 \G 命令&#xff0c;以下是其他優化 MySQL 查詢結果顯示的方法&#xff0c;供你參考&#xff1a; --- ### 1. **使用 \T 命令導出結果到文件** - 在 MySQL 命令行中&#xff0c;使用 \T 文件名 可以將查詢結果以表格形式導出到指定文件&#xff0c;便于后續…