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