2025/10/16 FastAPI - 8

김기훈·2025년 10월 16일

TIL

목록 보기
37/191

오늘 학습한 내용

  • FastAPI
      1. HTTPException
      1. 경로 작동 설정
      1. JSON 호환 가능 인코더
      1. PUT/PATCH
  • FastAPI - Plus
    • 의존성
    • 미들웨어
    • JWT (몇번 더 봐야할 듯)

어려운 내용

  • 의존성
  • JWT
  • 미들웨어

오늘 발생한 문제(발생 했다면)

  • 쪽지 시험중 7개 틀림

    • 경로 매개변수를 정의하는 방법

      • @app.get("/{item_id}") 를 @app.route("/{item_id}")로 착각
    • 미들웨어

      • 이 이론을 아예 몰랐음
        • 오늘 공부 예정
      • 요청과 응답을 처리하는 중간 단계에서 동작을 정의하는 데 사용(ex. 로깅, 인증)
    • 앤드포인트에 응답 상태 코드를 설정하려면 사용해야 하는것들

      • 다중 선택인지 모르고 HTTPException 이거 고르고 보기 더 안봤음
        • 문제를 끝까지 읽는 습관의 필요성을 느낌
      • HTTPException , status code 매개변수 , status 라이브러리
    • 요청 본문을 처리할 때 주로 사용하는 두가지 구성요소

      • Body()는 확실하게 알았는데 Query() 랑 Pydantic 모델이랑 애매했음
        • 원래부터 헷갈리던 부분인데 이 부분에 대해서 더 자세하게 공부해야겠다고 느꼈음
      • Body()는 요청 데이터를 처리하고, Pydantic 모델은 데이터의 구조와 검증을 정의
      • 이 두가지는 요청데이터를 안전하게 처리하는 데 필수적
    • 의존성 주입

      • (a) = datetime.now() : 현재의 지역 날짜와 시간을 반환
        • datetime.now(tz=None) : tz 매개변수가 None 일시 datetime.today() 와 유사
      • (b) = Depends(request_time) : 요청 시간 데이터를 엔드포인트 함수에 주입
        • FastAPI는 이 의존성 함수를 실행하고 결과를 deps 매개변수로 전달
    • JWT

      • OAuth2PasswordBearer : JWT와 같은 토큰기반 인증에 사용됨
        • tokenUrl="token"은 인증 토큰을 얻기 위한 엔드포인트 url
      • 토큰 검증
        • 클라리언트가 보낸 토큰을 Depends(oauth2_scheme)으로 주입
        • 토큰이 유효하지 않으면 (a) = HTTPException을 사용해 401을 반환
    • 미들웨어

      • 요청 로깅
        • (a) = logging을 사용해 요청 url을 로그로 기록
        • logger.info를 통해 요청 url을 출력
          - 요청 로그 기록: logger.info
      • 요청 처리 후 응답 반환: (b) = await call_next(request)

라이브세션

  • docker
docker run \
  --name oz_be14 \
  -e MYSQL_ROOT_PASSWORD=1234 \
  -e MYSQL_DATABASE=fastapi \
  -v local_db:/var/lib/mysql \
  -p 3306:3306 \
  -d \
  mysql:8.0

profile
안녕하세요.

0개의 댓글