统一格式化返回的时间格式。
This commit is contained in:
parent
31fc4b88f3
commit
62a28014bb
@ -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()
|
||||
@ -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(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user