httpx 调用 Python Web Apps
您可以使用WSGI协议将httpx-client
配置为直接调用Python web应用程序。
这对于两个主要用例特别有用:
- 在测试用例中用
httpx
作客户端。 - 在测试期间或在开发/过渡环境中模拟外部服务。
下面是针对 Flask 应用程序进行集成的示例:
from flask import Flask
import httpx
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
with httpx.Client(app=app, base_url="http://testserver") as client:
r = client.get("/")
assert r.status_code == 200
assert r.text == "Hello World!"
对于一些更复杂的情况,您可能需要自定义 WSGI 传输。这使您可以:
- 检查 500 错误响应,而不是通过设置
raise_app_exceptions=False
来引发异常。 - 通过设置
script_name
(WSGI) 在子路径上挂载 WSGI 应用程序。 - 通过设置
remote_addr
(WSGI) 为请求使用给定的Client地址。
例如:
# Instantiate a client that makes WSGI requests with a client IP of "1.2.3.4".
transport = httpx.WSGITransport(app=app, remote_addr="1.2.3.4")
with httpx.Client(transport=transport, base_url="http://testserver") as client:
...