ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FastAPI - 매개변수
    Backend 2025. 10. 16. 08:37

    I. 기본

    - OpenAPI 표준, JSON 스키마 생성

     

    - 순서:

        1. Import

        2. FastAPI instance

        3. 경로 작동 생성: '/users/foo' -> 가상 경로.

            -> Operations: HTTP methods (POST, GET, PUT, DELETE...)

            -> async: Asynchoronous (비동기), 다른 작업 완료되지 않아도 다음 코드 실행

        4. 경로 작동 함수 (Python 함수)

        5. 콘텐츠 변환: reeturn (pydantic model도 ok)

     

    II. 경로 매개변수

    - 경로 매개변수: 포매팅 ({var}) 으로 경로 지정 가능

     

    - 타입 있을 떄: 타입 어노태이션 (item: str)

     

    - 문서화: 서버 경로 + /docs (Swagger UI)

     

    - Pydantic: Data 검증 (잘못된 입력의 데이터 들어올시 미리 에러 반환)

     

    - 순서: 경로 작동은 순차적이므로 상위에 경로 써두면 상위 경로 우선적.

     

    - 사전정의

        a. Python 기본 Enum 사용

        b. 고정값의 class attributes 생성

    class ModelName(str, Enum):
        alexnet = "alexnet"
        resnet = "resnet"
        lenet = "lenet"

        c. 경로 매개변수: 타입 어노테이션

            def a(model_name: ModelName) 방식으로 경로 작동 함수 생성.

     

    - 열거형 작업

        a. 열거형 멤버 비교: 'if model_name is ModelName.alexnet:'

        b. 열거형 값 가져오기: 'if model_name.value == "lenet":"

        c. 열거형 멤버 반환: model_name 반환

     

    - 경로 매개변수

        a. /files/{file_path} -> file 경로 자체가 매개변수

        b. Starlette로 경로 매개변수를 내부 선언 가능

        c. 경로 변환기: {file_path:path} -> parameter가 path와 일치해야함 


    III. 쿼리 매개변수

    - 경로 매개변수가 아닌 함수 매개변수

     

    - 문자열 (URL 일부이니까) & 경로 매개변수에 적용된 것들 다 적용

     

    - 기본값: item: int=0 처럼 지정 가능

     

    - 선택적 매개변수: 기본값을 None으로 지정 가능 (q: Union[str, None] = None) -> Optional 사용 권장 but 안써도 FastAPI가 인지

     

    - 형변환: Bool로 선언 가능 (true, on, yes는 대소문자 상관없이 모두 True, 나머지 False)

     

    - 여러 경로 & 쿼리 매개변수

        a. 여러 경로 매개변수와 쿼리 매개변수 동시 선언 가능

        b. 매개변수는 이름으로 감지

     

    - 필수 쿼리 매개변수: 기본값 선언하지 않으면 필수

     

     

     

Designed by Tistory.