完成路由和api骨架
This commit is contained in:
parent
1c82ab47dd
commit
b58fd6a8c6
45
main.py
Normal file
45
main.py
Normal file
@ -0,0 +1,45 @@
|
||||
import logging
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from config import DATABASE_CONFIG, JWT_CONFIG, LOGGING_CONFIG, SYSTEM_ADMIN_CONFIG
|
||||
from sqlalchemy.ext.asyncio import create_async_engine
|
||||
from services.init_db import init_db
|
||||
from routes.auth import auth_router
|
||||
from routes.users import users_router
|
||||
|
||||
# 配置日志
|
||||
logging.basicConfig(
|
||||
level=LOGGING_CONFIG['level'],
|
||||
format=LOGGING_CONFIG['format'],
|
||||
filename=LOGGING_CONFIG['filename']
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 初始化FastAPI应用
|
||||
app = FastAPI(
|
||||
title="User Management System",
|
||||
description="API for managing users with role-based access control",
|
||||
version="1.0.0"
|
||||
)
|
||||
|
||||
# 创建数据库引擎
|
||||
engine = create_async_engine(
|
||||
f"mysql+asyncmy://{DATABASE_CONFIG['user']}:{DATABASE_CONFIG['password']}@"
|
||||
f"{DATABASE_CONFIG['host']}:{DATABASE_CONFIG['port']}/{DATABASE_CONFIG['database']}",
|
||||
echo=True
|
||||
)
|
||||
|
||||
# 初始化数据库
|
||||
@app.on_event("startup")
|
||||
async def startup_event():
|
||||
logger.info("Initializing database...")
|
||||
await init_db(engine)
|
||||
logger.info("Database initialized successfully")
|
||||
|
||||
# 注册路由
|
||||
app.include_router(auth_router, prefix="/api/auth", tags=["auth"])
|
||||
app.include_router(users_router, prefix="/api/users", tags=["users"])
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
17
routes/auth.py
Normal file
17
routes/auth.py
Normal file
@ -0,0 +1,17 @@
|
||||
from schemas.auth import Token
|
||||
from fastapi import APIRouter
|
||||
|
||||
|
||||
router = APIRouter(prefix="/api/auth", tags=["auth"])
|
||||
|
||||
@router.post("/login", response_model=Token)
|
||||
async def login():
|
||||
pass
|
||||
|
||||
@router.post("/logout")
|
||||
async def logout():
|
||||
pass
|
||||
|
||||
@router.post("/refresh", response_model=Token)
|
||||
async def refresh_token():
|
||||
pass
|
30
routes/users.py
Normal file
30
routes/users.py
Normal file
@ -0,0 +1,30 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from fastapi.security import OAuth2PasswordBearer
|
||||
from typing import List, Optional
|
||||
from models.user import User
|
||||
from schemas.user import UserCreate, UserUpdate, UserResponse
|
||||
from services.auth import get_current_user
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/auth/login")
|
||||
|
||||
@router.get("/", response_model=List[UserResponse])
|
||||
async def get_users():
|
||||
# 实现获取用户列表逻辑
|
||||
pass
|
||||
|
||||
@router.post("/", response_model=UserResponse, status_code=status.HTTP_201_CREATED)
|
||||
async def create_user():
|
||||
# 实现创建用户逻辑
|
||||
pass
|
||||
|
||||
@router.put("/{user_id}", response_model=UserResponse)
|
||||
async def update_user():
|
||||
# 实现更新用户逻辑
|
||||
pass
|
||||
|
||||
@router.delete("/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def delete_user():
|
||||
# 实现删除用户逻辑
|
||||
pass
|
Loading…
x
Reference in New Issue
Block a user