最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python的requests庫(kù)調(diào)用API接口的詳細(xì)步驟

 更新時(shí)間:2025年08月03日 13:38:09   作者:兵臨天下api  
使用 Python 的requests庫(kù)調(diào)用 API 接口是開(kāi)發(fā)中最常用的方式之一,它簡(jiǎn)化了 HTTP 請(qǐng)求的處理流程,以下是詳細(xì)步驟和實(shí)戰(zhàn)示例,涵蓋各種常見(jiàn)場(chǎng)景,需要的朋友可以參考下

使用 Python 的requests庫(kù)調(diào)用 API 接口是開(kāi)發(fā)中最常用的方式之一,它簡(jiǎn)化了 HTTP 請(qǐng)求的處理流程。以下是詳細(xì)步驟和實(shí)戰(zhàn)示例,涵蓋各種常見(jiàn)場(chǎng)景:

一、準(zhǔn)備工作:安裝 requests 庫(kù)

如果尚未安裝,先通過(guò) pip 安裝:

pip install requests

二、基本調(diào)用流程(以 RESTful API 為例)

1. 導(dǎo)入 requests 庫(kù)

import requests

2. 發(fā)送請(qǐng)求并獲取響應(yīng)

以調(diào)用一個(gè)獲取商品信息的 GET 接口為例:

# API地址URL
url = "https://api.example.com/products/123"

# 發(fā)送GET請(qǐng)求
response = requests.get(url)

# 查看響應(yīng)狀態(tài)碼(200表示成功)
print("狀態(tài)碼:", response.status_code)

# 查看響應(yīng)內(nèi)容(默認(rèn)是字符串格式)
print("響應(yīng)內(nèi)容:", response.text)

# 解析JSON格式的響應(yīng)(最常用)
if response.status_code == 200:
    data = response.json()  # 自動(dòng)解析JSON,返回字典/列表
    print("商品名稱:", data["name"])
    print("商品價(jià)格:", data["price"])

三、不同請(qǐng)求類型的調(diào)用方式

1. GET 請(qǐng)求(查詢數(shù)據(jù))

常用于獲取數(shù)據(jù),參數(shù)通過(guò) URL 的查詢字符串傳遞:

url = "https://api.example.com/products"

# 請(qǐng)求參數(shù)(會(huì)自動(dòng)拼接到URL后面:?category=electronics&page=1)
params = {
    "category": "electronics",  # 商品分類
    "page": 1                   # 頁(yè)碼
}

# 發(fā)送帶參數(shù)的GET請(qǐng)求
response = requests.get(url, params=params)

# 查看最終請(qǐng)求的URL
print("請(qǐng)求URL:", response.url)  # 輸出:https://api.example.com/products?category=electronics&page=1

# 解析響應(yīng)
if response.ok:  # response.ok 等價(jià)于 status_code == 200
    products = response.json()["data"]
    for product in products:
        print(product["id"], product["name"])

2. POST 請(qǐng)求(提交數(shù)據(jù))

常用于創(chuàng)建資源(如提交表單、創(chuàng)建訂單),數(shù)據(jù)放在請(qǐng)求體中:

url = "https://api.example.com/orders"

# 請(qǐng)求頭(告訴服務(wù)器數(shù)據(jù)格式為JSON)
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer your_token_here"  # 認(rèn)證令牌(如有)
}

# 請(qǐng)求體數(shù)據(jù)(JSON格式)
payload = {
    "product_id": 123,
    "quantity": 2,
    "address": "北京市朝陽(yáng)區(qū)..."
}

# 發(fā)送POST請(qǐng)求(json參數(shù)會(huì)自動(dòng)序列化并設(shè)置Content-Type為application/json)
response = requests.post(url, json=payload, headers=headers)

# 處理響應(yīng)
if response.status_code == 201:  # 201表示資源創(chuàng)建成功
    order = response.json()
    print("創(chuàng)建訂單成功,訂單號(hào):", order["order_id"])
else:
    print("創(chuàng)建失?。?, response.text)

3. PUT/PATCH 請(qǐng)求(更新數(shù)據(jù))

  • PUT:全量更新資源(需提供完整數(shù)據(jù))
  • PATCH:部分更新資源(僅提供需修改的字段)
# 更新商品價(jià)格(PATCH示例)
url = "https://api.example.com/products/123"
headers = {"Authorization": "Bearer your_token_here"}
payload = {"price": 3999}  # 僅更新價(jià)格字段

response = requests.patch(url, json=payload, headers=headers)

if response.ok:
    print("更新成功")

4. DELETE 請(qǐng)求(刪除數(shù)據(jù))

url = "https://api.example.com/products/123"
headers = {"Authorization": "Bearer your_token_here"}

response = requests.delete(url, headers=headers)

if response.status_code == 204:  # 204表示刪除成功(無(wú)返回內(nèi)容)
    print("刪除成功")

四、處理認(rèn)證與權(quán)限

多數(shù) API 需要身份驗(yàn)證,常見(jiàn)方式:

1. API Key 認(rèn)證

url = "https://api.example.com/data"
params = {
    "api_key": "your_api_key_here"  # 在查詢參數(shù)中攜帶API Key
}
response = requests.get(url, params=params)

2. Token 認(rèn)證(Bearer Token)

url = "https://api.example.com/data"
headers = {
    "Authorization": "Bearer your_token_here"  # 在請(qǐng)求頭中攜帶Token
}
response = requests.get(url, headers=headers)

3. 基礎(chǔ)認(rèn)證(Basic Auth)

url = "https://api.example.com/data"
# 傳入用戶名和密碼,requests會(huì)自動(dòng)處理編碼
response = requests.get(url, auth=("username", "password"))

五、處理異常與錯(cuò)誤

網(wǎng)絡(luò)請(qǐng)求可能遇到各種問(wèn)題,需添加異常處理:

url = "https://api.example.com/products"

try:
    # 設(shè)置超時(shí)時(shí)間(防止無(wú)限等待)
    response = requests.get(url, timeout=10)  # 10秒超時(shí)

    # 主動(dòng)拋出HTTP錯(cuò)誤(如404、500)
    response.raise_for_status()

except requests.exceptions.HTTPError as e:
    print(f"HTTP錯(cuò)誤:{e}")  # 如401權(quán)限不足、404未找到
except requests.exceptions.ConnectionError:
    print("連接錯(cuò)誤(可能是URL錯(cuò)誤或網(wǎng)絡(luò)問(wèn)題)")
except requests.exceptions.Timeout:
    print("請(qǐng)求超時(shí)")
except requests.exceptions.RequestException as e:
    print(f"其他錯(cuò)誤:{e}")
else:
    # 無(wú)異常時(shí)處理響應(yīng)
    print("請(qǐng)求成功,數(shù)據(jù):", response.json())

六、高級(jí)用法

1. 會(huì)話保持(復(fù)用連接)

多次調(diào)用同一 API 時(shí),用Session保持連接,提升效率:

# 創(chuàng)建會(huì)話對(duì)象
with requests.Session() as session:
    # 會(huì)話中設(shè)置全局headers(所有請(qǐng)求都會(huì)攜帶)
    session.headers.update({"Authorization": "Bearer your_token"})
    
    # 第一次請(qǐng)求(建立連接)
    response1 = session.get("https://api.example.com/products/1")
    # 第二次請(qǐng)求(復(fù)用連接,速度更快)
    response2 = session.get("https://api.example.com/products/2")

2. 上傳文件

url = "https://api.example.com/upload"
files = {
    "file": open("image.jpg", "rb")  # 打開(kāi)文件(二進(jìn)制模式)
}

response = requests.post(url, files=files)
print("上傳結(jié)果:", response.json())

七、總結(jié)

requests庫(kù)調(diào)用 API 的核心流程是:

  1. 確定請(qǐng)求類型(GET/POST 等)和 URL;
  2. 準(zhǔn)備參數(shù)(params)、請(qǐng)求體(json/payload)、請(qǐng)求頭(headers);
  3. 發(fā)送請(qǐng)求并處理響應(yīng)(解析 JSON、判斷狀態(tài)碼);
  4. 添加異常處理確保代碼健壯性。

通過(guò)上述方法,可應(yīng)對(duì)絕大多數(shù) API 調(diào)用場(chǎng)景,包括電商平臺(tái)接口、支付接口、第三方服務(wù)接口等。實(shí)際開(kāi)發(fā)中需結(jié)合具體 API 文檔調(diào)整參數(shù)和格式。

以上就是使用Python的requests庫(kù)調(diào)用API接口的詳細(xì)步驟的詳細(xì)內(nèi)容,更多關(guān)于Python requests調(diào)用API接口的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解python中的異常和文件讀寫(xiě)

    詳解python中的異常和文件讀寫(xiě)

    這篇文章主要介紹了python中的異常和文件讀寫(xiě)的的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python中的np.random.seed()隨機(jī)數(shù)種子問(wèn)題及解決方法

    Python中的np.random.seed()隨機(jī)數(shù)種子問(wèn)題及解決方法

    隨機(jī)數(shù)種子,相當(dāng)于我給接下來(lái)需要生成的隨機(jī)數(shù)一個(gè)初值,按照我給的這個(gè)初值,按固定順序生成隨機(jī)數(shù),接下來(lái)通過(guò)本文給大家介紹Python中的np.random.seed()隨機(jī)數(shù)種子問(wèn)題,需要的朋友可以參考下
    2022-04-04
  • django的403/404/500錯(cuò)誤自定義頁(yè)面的配置方式

    django的403/404/500錯(cuò)誤自定義頁(yè)面的配置方式

    這篇文章主要介紹了django的403/404/500錯(cuò)誤自定義頁(yè)面的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python爬蟲(chóng)入門(mén)教程--利用requests構(gòu)建知乎API(三)

    python爬蟲(chóng)入門(mén)教程--利用requests構(gòu)建知乎API(三)

    這篇文章主要給大家介紹了關(guān)于python爬蟲(chóng)入門(mén)之利用requests構(gòu)建知乎API的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • Python中的"沒(méi)有那個(gè)文件"錯(cuò)誤(FileNotFoundError)的解決方法詳解

    Python中的"沒(méi)有那個(gè)文件"錯(cuò)誤(FileNotFoundError)的解決方法詳解

    在Python編程中,遇到“沒(méi)有那個(gè)文件”錯(cuò)誤(FileNotFoundError)是常見(jiàn)的問(wèn)題之一,本文將詳細(xì)分析這個(gè)錯(cuò)誤的原因,并提供實(shí)用的解決方案和指南,有需要的可以參考下
    2024-11-11
  • python中創(chuàng)建一個(gè)包并引用使用的操作方法

    python中創(chuàng)建一個(gè)包并引用使用的操作方法

    python包在開(kāi)發(fā)中十分常見(jiàn),一般通過(guò)導(dǎo)入包含特定功能的python模塊包進(jìn)行使用。當(dāng)然,也可以自己創(chuàng)建打包模塊,然后發(fā)布,安裝使用,這篇文章主要介紹了python中如何創(chuàng)建一個(gè)包并引用使用,需要的朋友可以參考下
    2022-08-08
  • python3 hdf5文件 遍歷代碼

    python3 hdf5文件 遍歷代碼

    這篇文章主要介紹了python3 hdf5文件 遍歷代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python元組的定義及使用

    Python元組的定義及使用

    這篇文章主要介紹了Python元組的定義及使用,在Python中元組是一個(gè)和列表非常類似的數(shù)據(jù)類型,不同之處就是列表中的元素可以修改,而元組之中的元素不可以修改。想具體了解的下小伙伴請(qǐng)參考下面文章的具體內(nèi)容,希望對(duì)你有所幫助
    2021-11-11
  • pandas如何將dataframe中的NaN替換成None

    pandas如何將dataframe中的NaN替換成None

    這篇文章主要介紹了pandas如何將dataframe中的NaN替換成None問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python numpy矩陣處理運(yùn)算工具用法匯總

    Python numpy矩陣處理運(yùn)算工具用法匯總

    這篇文章主要介紹了Python numpy矩陣處理運(yùn)算工具用法匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

东宁县| 密山市| 巴南区| 梅州市| 泌阳县| 五常市| 泌阳县| 乐亭县| 北碚区| 和林格尔县| 木兰县| 榕江县| 南通市| 甘孜| 梁河县| 邹平县| 新源县| 东台市| 九龙坡区| 柏乡县| 石门县| 桐梓县| 长治市| 延吉市| 郸城县| 田阳县| 崇信县| 永寿县| 油尖旺区| 宁海县| 舞钢市| 黑河市| 错那县| 海兴县| 波密县| 双城市| 遂川县| 久治县| 沙洋县| 澎湖县| 灵璧县|