今天咱们聊聊 treq
,一个用起来特别顺手的 Python HTTP 客户端库。你可能已经听说过 Twisted,没错,treq
就是基于 Twisted 的一个轻量级 HTTP 工具,用它来发请求、处理响应那是相当方便。
安装 treq
要开始用 treq
,第一步当然是安装它。我们打开终端,运行下面这行命令:
pip install treq
简单吧?装好之后,咱就可以开始玩耍了。
发送 GET 请求
你肯定想先知道怎么发个 GET 请求吧?来看个例子:
from twisted.internet import reactor
from twisted.internet.defer import ensureDeferred
import treq
defgot_response(response):
print(f"Response code: {response.code}")
return response.text()
defhandle_content(content):
print(f"Page content: {content[:100]}...")
defhandle_error(failure):
print(f"Request failed: {failure.getErrorMessage()}")
url ="https://jsonplaceholder.typicode.com/todos/1"
# 用 treq 发送 GET 请求
d = treq.get(url)
# 添加回调函数处理响应
d.addCallback(got_response)
d.addCallback(handle_content)
# 添加错误处理
d.addErrback(handle_error)
# 运行 Twisted reactor
reactor.run()
简单总结一下这段代码:首先,我们用 treq.get
发了个 GET 请求,然后通过 addCallback
方法来处理返回的响应,最后如果出错了,我们用 addErrback
来捕获错误。需要注意的是, Twisted 的异步模型需要通过 reactor.run()
来启动事件循环。
发送 POST 请求
除了 GET,咱们也经常要发 POST 请求。来吧,试试这个:
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
d = treq.post("https://jsonplaceholder.typicode.com/posts", json=data)
d.addCallback(got_response) # 继续用之前的回调函数
d.addCallback(handle_content)
d.addErrback(handle_error)
reactor.run()
这里我们用 treq.post
发了个 POST 请求,带了一些 JSON 数据。和 GET 请求类似,我们通过回调来处理响应或者错误。
结语
用 treq
发请求基本就是这么简单。总的来说,它就是让发 HTTP 请求这件事变得轻而易举,特别是和 Twisted 一起用时,配合得相当默契。如果你已经在用 Twisted 了,treq
会是一个非常好的伙伴。当然,不熟悉 Twisted 也不要紧,跟着例子做一遍基本就没问题了。
希望这篇小教程能帮你顺利上手 treq
。如果还有什么问题,欢迎随时讨论。就这样,祝你编码愉快!