在没有POST数据的情况下,Python请求POST为什么不返回GET?

2024-04-24 10:45:59 发布

您现在位置:Python中文网/ 问答频道 /正文

运行python版本3.5.1和requests模块版本2.9.1

旧版本的工作-python版本2.7.9,不幸的是没有requests模块版本。你知道吗


在以前的场景中,我只需要处理POSTGET请求。你知道吗

以前,使用requests模块,当指定POST请求并将data关键字参数设置为None时,请求将默认返回GET请求。你知道吗

request = requests.post(url=self.url, headers=self.headers,
                        data=self.data, timeout=self.timeout, 
                        proxies=self.proxies, verify=False)

这非常漂亮,因为您可以编写一个通用的request函数,在一个块中同时包含GETPOST请求。然而,这似乎不再是事实,这导致我写了一些丑陋的代码如下:

if self.data:
    request = requests.post(url=self.url, headers=self.headers,
                            data=self.data, timeout=self.timeout, 
                            proxies=self.proxies, verify=False)
else:
    request = requests.get(url=self.url, headers=self.headers,
                           data=None, timeout=self.timeout, 
                           proxies=self.proxies, verify=False)

这是不可取的。我已经浏览了requestsGithub和文档,看看是否有任何东西记录了这一点,但似乎不是这样。你知道吗

此功能是否已删除,或在较新版本中是否已更改?你知道吗


Tags: 模块self版本nonefalseurldataget
2条回答

您也可以只使用request()函数而不是getpost方便函数。你知道吗

import requests

response = requests.request('POST' if self.data else 'GET', url=self.url, 
                             headers=self.headers, data=self.data or None, 
                             timeout=self.timeout, proxies=self.proxies, verify=False)

您可以使代码更漂亮:

if self.data:
    fn = requests.post
else:
    fn = requests.get

request = fn(url=self.url, headers=self.headers, data=self.data or None,
             timeout=self.timeout, proxies=self.proxies, verify=False)

(我知道这不是答案,但我不知道如何在评论中发布格式化代码。)

相关问题 更多 >