Files
fastapi-best-architecture/backend/middleware/state_middleware.py
T
Wu Clan 5762834744 Update the ruff rules and format the code (#846)
* Update the ruff rules and format the code

* Update the per-file-ignores

* Update the ci

* Update rules

* Fix codes

* Fix pagination

* Update rules
2025-10-10 19:02:49 +08:00

33 lines
1.1 KiB
Python

from fastapi import Request, Response
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
from backend.utils.request_parse import parse_ip_info, parse_user_agent_info
class StateMiddleware(BaseHTTPMiddleware):
"""请求状态中间件"""
async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
"""
处理请求并设置请求状态信息
:param request: FastAPI 请求对象
:param call_next: 下一个中间件或路由处理函数
:return:
"""
ip_info = await parse_ip_info(request)
request.state.ip = ip_info.ip
request.state.country = ip_info.country
request.state.region = ip_info.region
request.state.city = ip_info.city
ua_info = parse_user_agent_info(request)
request.state.user_agent = ua_info.user_agent
request.state.os = ua_info.os
request.state.browser = ua_info.browser
request.state.device = ua_info.device
response = await call_next(request)
return response