| 1234567891011121314151617181920212223242526 |
- from __future__ import annotations
- from typing import Any, Dict, Tuple, Type, TypeVar
- from pydantic import BaseModel, ValidationError
- from quart import request
- T = TypeVar("T", bound=BaseModel)
- async def parse_json(model: Type[T]) -> Tuple[T, Dict[str, Any]]:
- """
- 解析 JSON 请求体并用 Pydantic 校验。
- Returns:
- (obj, raw_dict) 方便向下兼容:既能用模型字段,也可把原 dict 透传给旧代码。
- """
- raw = await request.get_json()
- raw = raw or {}
- obj = model.model_validate(raw)
- return obj, raw
- def validation_error_response(e: ValidationError) -> Tuple[Dict[str, Any], int]:
- return {"code": 400, "message": "invalid request body", "errors": e.errors()}, 400
|