from fastapi import FastAPI, HTTPException, Depends from sqlalchemy.orm import Session from typing import List, Optional from app import models, schemas, crud from app.database import SessionLocal, engine from fastapi.middleware.cors import CORSMiddleware # 初始化数据库 models.Base.metadata.create_all(bind=engine) app = FastAPI() # 允许所有来源跨域访问(不推荐用于生产环境) origins = ["*"] # 设置CORS(跨域资源共享)策略 app.add_middleware( CORSMiddleware, allow_origins=["*"], # 允许所有来源 allow_credentials=True, allow_methods=["*"], # 允许所有方法 allow_headers=["*"], # 允许所有请求头 ) # 依赖注入 def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.get("/") def root(): return {"message": "Hello World"} @app.get("/hello") def hello(): return {"message": "Hello World"} # @app.get("/add", response_model=schemas.User) @app.get("/add") def add_user( nickname: Optional[str] = None, remark: Optional[str] = None, wechat_number: Optional[str] = None, wxid: Optional[str] = None, gender: Optional[str] = None, friend_add_time: Optional[str] = None, openid: Optional[str] = None, db: Session = Depends(get_db) ): return crud.create_user(db=db, user=schemas.UserCreate( nickname=nickname, remark=remark, wechat_number=wechat_number, wxid=wxid, gender=gender, friend_add_time=friend_add_time, openid=openid)) @app.get("/users/") def read_users(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)): return crud.get_users(db=db, skip=skip, limit=limit) @app.get("/user/{identifier}") def read_user(identifier: str, db: Session = Depends(get_db)): user = crud.get_user_by_openid_or_wxid(db, identifier=identifier) if user is None: raise HTTPException(status_code=404, detail="User not found") return user @app.delete("/user/{user_id}") def delete_user(user_id: int, db: Session = Depends(get_db)): user = crud.get_user(db=db, user_id=user_id) if user is None: raise HTTPException(status_code=404, detail="User not found") return crud.delete_user(db=db, user=user) @app.put("/user/{identifier}") def update_user(identifier: str, user_update: schemas.UserUpdate, db: Session = Depends(get_db)): user = crud.get_user_by_openid_or_wxid(db, identifier=identifier) if user is None: raise HTTPException(status_code=404, detail="User not found") return crud.update_user(db=db, user=user, user_update=user_update)