学生管理系统
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.exceptions import RequestValidationError
|
||||
from starlette import status
|
||||
from starlette.responses import JSONResponse
|
||||
|
||||
|
||||
# 自定义异常类
|
||||
class CustomException(Exception):
|
||||
def __init__(self, message: str):
|
||||
self.message = message
|
||||
|
||||
|
||||
def setup_exceptions(app: FastAPI):
|
||||
@app.exception_handler(CustomException)
|
||||
async def custom_exception_handler(request: Request, exc: CustomException):
|
||||
return JSONResponse(
|
||||
status_code=status.HTTP_200_OK, # http总是返回200
|
||||
content={"code": "500", "msg": exc.message}
|
||||
)
|
||||
|
||||
@app.exception_handler(RequestValidationError)
|
||||
async def validate_exception_handler(request: Request, exc: RequestValidationError):
|
||||
print("捕获到422错误:", exc.errors())
|
||||
"""处理422异常"""
|
||||
# 返回统一格式
|
||||
return JSONResponse(
|
||||
status_code=status.HTTP_200_OK, # http总是返回200
|
||||
content={"code": "500", "msg": "请求参数错误"}
|
||||
)
|
||||
|
||||
@app.exception_handler(Exception)
|
||||
async def global_exception_handler(request: Request, exc: Exception):
|
||||
print("捕获到系统错误:", repr(exc))
|
||||
"""处理所有异常"""
|
||||
# 返回统一格式
|
||||
response = JSONResponse(
|
||||
status_code=status.HTTP_200_OK, # http总是返回200
|
||||
content={"code": "500", "msg": "系统错误"}
|
||||
)
|
||||
# 允许所有源(与你的 CORS 配置一致)
|
||||
response.headers["Access-Control-Allow-Origin"] = "*"
|
||||
response.headers["Access-Control-Allow-Methods"] = "*"
|
||||
response.headers["Access-Control-Allow-Headers"] = "*"
|
||||
return response
|
||||
@@ -0,0 +1,26 @@
|
||||
from typing import Any, List
|
||||
|
||||
from fastapi.encoders import jsonable_encoder
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class Result(BaseModel):
|
||||
code: str
|
||||
msg: str
|
||||
data: Any = None
|
||||
|
||||
@staticmethod
|
||||
def success(data: Any = None):
|
||||
json_data = None
|
||||
if data is not None:
|
||||
json_data = jsonable_encoder(data)
|
||||
return Result(code="200", msg="请求成功", data=json_data)
|
||||
|
||||
@staticmethod
|
||||
def error(msg: str = "请求失败"):
|
||||
return Result(code="500", msg=msg)
|
||||
|
||||
|
||||
class PageInfo(BaseModel):
|
||||
total: int = 0
|
||||
list: List[Any] = []
|
||||
Reference in New Issue
Block a user