小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python發(fā)送HTTP請求太難?這個庫讓你告別繁瑣代碼!

 只怕想不到 2024-12-27 發(fā)布于湖北

?? Python神器系列:envoy庫讓HTTP請求變得超簡單,建議收藏!

各位小伙伴好,我是逍遙。今天給大家介紹一個特別好用的HTTP請求庫 - envoy。不知道你是否也遇到過這些痛點(diǎn):

  • requests庫寫起來代碼太長

  • urllib使用太復(fù)雜

  • aiohttp異步操作不會用

如果有這些困擾,那envoy絕對是你的救星!

envoy是什么?

envoy是一個超級簡單的HTTP客戶端庫,它的特點(diǎn)是:

  • 語法簡潔,一行代碼搞定請求

  • 自動處理編碼問題

  • 支持同步和異步

  • 內(nèi)置重試機(jī)制

  • 返回結(jié)果清晰易讀

快速上手

1. 安裝envoy

pip install envoy

2. 發(fā)送GET請求

來看最簡單的示例:

import envoy

# 發(fā)送GET請求
r = envoy.get('https:///get')
print(f'狀態(tài)碼: {r.status_code}')
print(f'響應(yīng)內(nèi)容: {r.json()}')

就這么簡單!是不是比requests庫簡潔多了?

3. POST請求怎么發(fā)?

import envoy

# 發(fā)送POST請求
data = {'name''老王''age'18}
r = envoy.post('https:///post'data=data)

# 打印返回結(jié)果
if r.status_code == 200:
    print('請求成功!')
    print(f'服務(wù)器返回:{r.json()}')
else:
    print(f'請求失敗,錯誤碼:{r.status_code}')

4. 帶參數(shù)的請求

import envoy

# URL參數(shù)
params = {
    'key1''value1',
    'key2''value2'
}

# 發(fā)送請求
r = envoy.get('https:///get'params=params)

# 查看實際請求的URL
print(f'請求URL: {r.url}')

實用技巧

1. 自動重試

import envoy

# 最多重試3次,每次間隔1秒
r = envoy.get('https://api.'
              retries=3,
              backoff_factor=1)

2. 設(shè)置超時

import envoy

# 設(shè)置5秒超時
try:
    r = envoy.get('https://api.'timeout=5)
except envoy.exceptions.Timeout:
    print('請求超時了!')

3. 自定義請求頭

import envoy

# 設(shè)置請求頭
headers = {
    'User-Agent''Python/Envoy',
    'Authorization''Bearer xxx'
}

r = envoy.get('https://api.'headers=headers)

實戰(zhàn)案例:天氣查詢器

來做個實用的小項目:

import envoy
import json
from datetime import datetime

def get_weather(city):
    # 這里使用和風(fēng)天氣API(需要自己申請key)
    api_key = 'your_api_key'
    url = f'https://api./v7/weather/now'
    
    params = {
        'location'city,
        'key'api_key
    }
    
    try:
        r = envoy.get(urlparams=params)
        if r.status_code == 200:
            data = r.json()
            weather = data['now']
            return f'''
            城市:{city}
            溫度:{weather['temp']}
            天氣:{weather['text']}
            濕度:{weather['humidity']}%
            更新時間:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
            '''
        else:
            return f'獲取天氣信息失敗,錯誤碼:{r.status_code}'
    except Exception as e:
        return f'發(fā)生錯誤:{str(e)}'

# 測試
print(get_weather('北京'))

進(jìn)階用法

1. 文件上傳

import envoy

# 上傳單個文件
files = {'file': open('test.txt', 'rb')}
r = envoy.post('https:///post', files=files)

# 上傳多個文件
files = {
    'file1': open('test1.txt', 'rb'),
    'file2': open('test2.txt', 'rb')
}
r = envoy.post('https:///post', files=files)

2. 會話管理

import envoy

# 創(chuàng)建會話
with envoy.Session() as session:
    # 設(shè)置公共請求頭
    session.headers.update({
        'User-Agent': 'Custom User Agent',
        'Accept': 'application/json'
    })
    
    # 發(fā)送請求
    r1 = session.get('https://api./endpoint1')
    r2 = session.get('https://api./endpoint2')

3. 異步請求

import envoy
import asyncio

async def fetch_data():
    # 創(chuàng)建異步會話
    async with envoy.AsyncSession() as session:
        # 并發(fā)發(fā)送多個請求
        tasks = [
            session.get('https://api./1'),
            session.get('https://api./2'),
            session.get('https://api./3')
        ]
        responses = await asyncio.gather(*tasks)
        
        # 處理響應(yīng)
        for r in responses:
            print(f'狀態(tài)碼: {r.status_code}')

# 運(yùn)行異步代碼
asyncio.run(fetch_data())
  1. 如何處理HTTPS證書問題?

    import envoy

    # 忽略證書驗證(不建議在生產(chǎn)環(huán)境使用)
    r = envoy.get('https://', verify=False)

envoy真的是一個特別好用的HTTP請求庫,它把復(fù)雜的事情變得簡單。無論是做爬蟲、調(diào)用API,還是開發(fā)Web應(yīng)用,用它都能大大提高開發(fā)效率。

如果你覺得這篇文章有幫助,別忘了點(diǎn)贊關(guān)注哦!我們下期再見!

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多