Requests 準備的請求

2022-06-27 15:04 更新

當你從 API 或者會話調用中收到一個 Response 對象時,?request? 屬性其實是使用了 ?PreparedRequest?。有時在發(fā)送請求之前,你需要對 body 或者 header (或者別的什么東西)做一些額外處理,下面演示了一個簡單的做法:

from requests import Request, Session

s = Session()
req = Request('GET', url,
    data=data,
    headers=header
)
prepped = req.prepare()

# do something with prepped.body
# do something with prepped.headers

resp = s.send(prepped,
    stream=stream,
    verify=verify,
    proxies=proxies,
    cert=cert,
    timeout=timeout
)

print(resp.status_code)

由于你沒有對 Request 對象做什么特殊事情,你立即準備和修改了 ?PreparedRequest? 對象,然后把它和別的參數(shù)一起發(fā)送到 ?requests.*? 或者 ?Session.*?。

然而,上述代碼會失去 Requests ?Session? 對象的一些優(yōu)勢, 尤其 ?Session? 級別的狀態(tài),例如 cookie 就不會被應用到你的請求上去。要獲取一個帶有狀態(tài)的 ?PreparedRequest?, 請用 ?Session.prepare_request()? 取代 ?Request.prepare()? 的調用,如下所示:

from requests import Request, Session

s = Session()
req = Request('GET',  url,
    data=data
    headers=headers
)

prepped = s.prepare_request(req)

# do something with prepped.body
# do something with prepped.headers

resp = s.send(prepped,
    stream=stream,
    verify=verify,
    proxies=proxies,
    cert=cert,
    timeout=timeout
)

print(resp.status_code)
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號