理解Python requests会话参数
我正在尝试使用Twitter的API,并且使用tweepy这个库来理解API的设计。为了这个讨论,我们来看一下这个API https://dev.twitter.com/docs/api/1.1/get/users/show
一个示例的请求看起来像这样 https://api.twitter.com/1.1/users/show.json?screen_name=rsarver
所以,我不想自己构建一个网址字符串。
我正在深入研究 https://github.com/tweepy/tweepy/blob/master/tweepy/binder.py 里的代码。
更具体一点。
s = requests.Session()
然后是 build_parameters()
这个函数,在这里他们设置了参数……
在代码中,他们并没有明确地构建网址。
在 execute_code()
中,如果我执行 print full_url
,它的结果就是 ( https://api.twitter.com/1.1/users/show.json)
我猜测在 build_parameters
中,self.session.params 是设置变量的地方,然后在第156行是所有操作发生的地方?
resp = self.session.request(self.method, full_url,
data=self.post_data, timeout=self.api.timeout,
auth=auth, proxies=self.api.proxy)
但是为了调试,我真的想知道执行的是什么“字符串网址”。我该如何获取这个“字符串”?或者也许我还没有完全理解代码。
长话短说。
我想向Twitter的API发送请求,但我不想“构建”字符串……而是想使用这个会话参数来处理它,但同时,我最终还是想打印出被“请求”的字符串?
2 个回答
我用简单的ctrl-F快捷键找到了full_url
是怎么构建的,具体在第113和114行。
url = self.api_root + self.path
full_url = 'https://' + self.host + url
这就是你想要找的内容吗?用同样的方法,你也可以查找self.api_root
和self.path
是在哪里定义的。
你需要的完整网址在你从请求中得到的响应对象里:
resp = self.session.request(self.method, full_url,
data=self.post_data, timeout=self.api.timeout,
auth=auth, proxies=self.api.proxy)
print resp.url # This is the url you want
我不太确定这对你是否真的有帮助。你是想在继续使用tweepy的情况下获取这个网址(而且不想改动tweepy)吗?还是说你只是想通过tweepy了解如何与Twitter的API进行互动?