中间件和监听
中间件是在向服务器请求之前或之后执行的功能。它们可用于修改用户定义的处理函数的请求或响应。
另外,Sanic提供程序监听器允许您在应用程序生命周期的各个不同点运行代码。
中间件
两种中间件:请求和响应。都用装饰器@app.middleware声明,
装饰器的参数是一个表示其类型的字符串:requset和response响应中间件接收请求和响应作为参数。
最简单的中间件不修改请求或响应:
@app.middleware('request')
async def print_on_request(request):
print("I print when a request is received by the server")
@app.middleware('response')
async def print_on_response(request, response):
print("I print when a response is returned by the server")
修改 请求和响应
中间件可以修改给定的请求或响应参数,只要它不返回。以下示例显示了一个实际的用例。
app = Sanic(__name__)
@app.middleware('response')
async def custom_banner(request, response):
response.headers["Server"] = "Fake-Server"
@app.middleware('response')
async def prevent_xss(request, response):
response.headers["x-xss-protection"] = "1; mode=block"
app.run(host="0.0.0.0", port=8000)