ShiErFeng/shierfeng-fastapi-backend/middlewares/api_response_header_middleware.py
2026-07-24 09:43:10 +08:00

29 lines
890 B
Python

from fastapi import FastAPI, Request
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
from starlette.responses import Response
class ApiResponseHeaderMiddleware(BaseHTTPMiddleware):
"""
接口响应头追加中间件
"""
async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
"""
在响应返回前统一追加接口响应头
"""
response = await call_next(request)
api_response_headers = getattr(request.state, 'api_response_headers', None)
if api_response_headers:
response.headers.update(api_response_headers)
return response
def add_api_response_header_middleware(app: FastAPI) -> None:
"""
添加接口响应头追加中间件
:param app: FastAPI对象
"""
app.add_middleware(ApiResponseHeaderMiddleware)