gpt4 book ai didi

python - 使用 Python 请求,我可以将 "data"添加到准备好的请求中吗?

转载 作者:太空狗 更新时间:2023-10-30 03:00:56 26 4
gpt4 key购买 nike

如果 HTTP 方法是 GET,下面的代码设置 _request,然后它有一个 if 语句来处理 PUT POSTPATCH

我正在尝试为所有方法类型创建一个请求设置语句。

这可能吗?在我看来,没有办法将 data 添加到准备好的请求中,如果这是真的,那么也许我需要两种不同的方式来设置请求,一种方式是 GETPUTPATCHPOST 的一种方式。

def fetch_from_api(self):
s = Session()
headers = { "Authorization" : REST_API_AUTHORIZATION_HEADER}
_request = Request(self.method, self.url_for_api, headers=headers)

if self.method in ['POST', 'PATCH', 'PUT']:
headers['content-type'] = 'application/x-www-form-urlencoded'
_request = Request(self.method, self.url_for_api, headers=headers, data=self.postdata)

prepped = _request.prepare()
self.api_response = s.send(prepped)

最佳答案

这个问题有点老了,希望@DukeDougal 已经有了解决方案。不过,也许这会对其他人有所帮助。

我在示例中注意到的第一件事是在该方法的开头附近创建了一个 Request 对象。然后,如果方法是“POST”、“PATCH”或“PUT”,Request 构造函数将再次调用以获取>另一个对象。在那种情况下,第一个对象就消失了。它是不必要地创建的。

data= 参数未提供给 Request 构造函数时,它与指定 data=None 相同。利用这一点,只调用一次构造函数,然后就不需要将 data 值添加到现有的 Request(或 PreparedRequest )对象:

def fetch_from_api(self):
s = Session()
headers = {'Authorization': REST_API_AUTHORIZATION_HEADER}
data = None # Assume no data until method is checked

if self.method in ['POST', 'PATCH', 'PUT']:
headers['content-type'] = 'application/x-www-form-urlencoded'
data = self.postdata # Add the data

# Now headers and data are ready, get a Request object
_request = Request(self.method, self.url_for_api, headers=headers, data=data)

prepped = _request.prepare()
self.api_response = s.send(prepped)

关于python - 使用 Python 请求,我可以将 "data"添加到准备好的请求中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27415934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com