-
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. 매개변수는 이름으로 감지
- 필수 쿼리 매개변수: 기본값 선언하지 않으면 필수
'Backend' 카테고리의 다른 글
FastAPI - Body (다중 매개변수, 필드, 중첩 모델) (0) 2025.10.25 FastAPI - 요청 본문, 검증, Pydantic (쿼리) (0) 2025.10.21