deliveryman-api/app/main.py

62 lines
1.8 KiB
Python

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.api.endpoints import user, address, community, station, order, coupon
from app.models.database import Base, engine
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
from app.core.response import error_response
from fastapi import HTTPException
# 创建数据库表
Base.metadata.create_all(bind=engine)
app = FastAPI(
title="闪兔到家",
description="API 文档",
version="1.0.0"
)
# 配置 CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 添加用户路由
app.include_router(user.router, prefix="/api/user", tags=["用户"])
app.include_router(address.router, prefix="/api/address", tags=["配送地址"])
app.include_router(community.router, prefix="/api/community", tags=["社区"])
app.include_router(station.router, prefix="/api/station", tags=["驿站"])
app.include_router(order.router, prefix="/api/order", tags=["订单"])
app.include_router(coupon.router, prefix="/api/coupon", tags=["优惠券"])
@app.get("/")
async def root():
return {"message": "欢迎使用 FastAPI!"}
@app.get("/health")
async def health_check():
return {"status": "healthy"}
@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request, exc):
return JSONResponse(
status_code=400,
content=error_response(
code=400,
message=str(exc)
)
)
@app.exception_handler(HTTPException)
async def http_exception_handler(request, exc):
return JSONResponse(
status_code=exc.status_code,
content=error_response(
code=exc.status_code,
message=exc.detail
)
)