ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • python 정리 #1(routers/user.py)
    Python/Today 2025. 7. 8. 10:48
    # FastAPI, 의존성 주입, HTTP 예외 처리용 클래스 임포트
    from fastapi import APIRouter, Depends, HTTPException
    # SQLAlchemy 세션 타입 임포트
    from sqlalchemy.orm import Session
    
    # DB 세션 제공 함수(get_db) 임포트
    from db.another_db.mariaDB import get_db
    # 요청 본문 검증용 Pydantic 모델(UserCreate) 임포트
    from schemas.requests.user_create import UserCreate
    # 실제 사용자 생성 로직(create_user) 임포트
    from crud.user.user_crud import create_user
    
    
    # ─────────────────────────────────────────────────────────────────────────────
    # 라우터 인스턴스 생성
    # ─────────────────────────────────────────────────────────────────────────────
    router = APIRouter()
    
    
    # ─────────────────────────────────────────────────────────────────────────────
    # 경로 정의: POST /signup
    # ─────────────────────────────────────────────────────────────────────────────
    @router.post('/signup')
    def signup(
        user: UserCreate,                    # 요청 본문 → UserCreate 모델로 자동 파싱/검증
        db: Session = Depends(get_db)        # DB 세션 → get_db() 의존성 주입
    ):
        """
        회원가입 엔드포인트
        :param user: 이메일, 비밀번호 등을 담은 UserCreate 모델
        :param db: SQLAlchemy DB 세션
        :return: 생성된 사용자 ID 및 이메일
        """
    
        # ─────────────────────────────────────────────────────────────────────────
        # 1) 사용자 생성
        #    - 비밀번호 해싱, 중복 검사 등 CRUD 로직 수행
        # ─────────────────────────────────────────────────────────────────────────
        try:
            db_user = create_user(db, user)
        except ValueError as e:
            # 중복 이메일 등 비즈니스 로직 에러 처리
            raise HTTPException(status_code=400, detail=str(e))
    
        # ─────────────────────────────────────────────────────────────────────────
        # 2) 응답 반환
        #    - ID, 이메일만 노출 (민감 정보 제외)
        # ─────────────────────────────────────────────────────────────────────────
        return {
            "id": db_user.id,
            "email": db_user.email
        }
    

    'Python > Today' 카테고리의 다른 글

    SQLAlchemy 1.3 vs 2.0 차이점  (0) 2025.08.25
    SQLAlchemy ORM 특징  (1) 2025.08.22
    UUID VS ULID  (0) 2025.08.12
    python 정리 #3(app/crud/user_crud.py)  (0) 2025.07.08
    python 정리 #2(routers/router.py)  (0) 2025.07.08
Designed by Tistory.