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

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 typing import Any, Optional
from fastapi.responses import JSONResponse 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): class ResponseModel(BaseModel):
code: int = 200 code: int = status.HTTP_200_OK
message: str = "success" message: str = "success"
data: Optional[Any] = None 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( return ResponseModel(
code=200, code=status.HTTP_200_OK,
message=message, message=message,
data=data 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( return ResponseModel(
code=code, code=code,
message=message 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 app.core.response import error_response
from fastapi import HTTPException from fastapi import HTTPException
from app.middleware.request_logger import RequestLoggerMiddleware from app.middleware.request_logger import RequestLoggerMiddleware
from app.core.response import CustomJSONResponse
# 创建数据库表 # 创建数据库表
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)
@ -14,8 +15,9 @@ Base.metadata.create_all(bind=engine)
app = FastAPI( app = FastAPI(
title="Beefast 蜂快到家", title="Beefast 蜂快到家",
description="API 文档", description="API 文档",
version="1.0.0" version="1.0.0")
)
app.default_response_class = CustomJSONResponse
# 配置 CORS # 配置 CORS
app.add_middleware( app.add_middleware(