统一格式化返回的时间格式。

This commit is contained in:
aaron 2025-02-14 22:14:36 +08:00
parent 31fc4b88f3
commit 62a28014bb
2 changed files with 37 additions and 9 deletions

View File

@ -1,21 +1,47 @@
from typing import Any, Optional
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from pydantic import BaseModel, ConfigDict
from datetime import datetime
from typing import TypeVar, Generic
from fastapi import status
import json
class CustomJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
return super().default(obj)
class CustomJSONResponse(JSONResponse):
def render(self, content) -> bytes:
return json.dumps(
content,
ensure_ascii=False,
allow_nan=False,
indent=None,
separators=(",", ":"),
cls=CustomJSONEncoder
).encode("utf-8")
class ResponseModel(BaseModel):
code: int = 200
code: int = status.HTTP_200_OK
message: str = "success"
data: Optional[Any] = None
def success_response(*, data: Any = None, message: str = "success") -> dict:
def json_response(self):
return CustomJSONResponse(content=self.model_dump())
def success_response(*, data: Any = None, message: str = "success") -> CustomJSONResponse:
return ResponseModel(
code=200,
code=status.HTTP_200_OK,
message=message,
data=data
).model_dump()
).json_response()
def error_response(*, code: int = 400, message: str) -> dict:
def error_response(*, code: int = 400, message: str) -> CustomJSONResponse:
return ResponseModel(
code=code,
message=message
).model_dump()
).json_response()

View File

@ -7,6 +7,7 @@ from fastapi.responses import JSONResponse
from app.core.response import error_response
from fastapi import HTTPException
from app.middleware.request_logger import RequestLoggerMiddleware
from app.core.response import CustomJSONResponse
# 创建数据库表
Base.metadata.create_all(bind=engine)
@ -14,8 +15,9 @@ Base.metadata.create_all(bind=engine)
app = FastAPI(
title="Beefast 蜂快到家",
description="API 文档",
version="1.0.0"
)
version="1.0.0")
app.default_response_class = CustomJSONResponse
# 配置 CORS
app.add_middleware(