Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 안드로이드스튜디오
- AndroidStudio
- DFS와BFS
- 코드품앗이
- android
- 파이썬
- k8s
- 개발
- BAEKJOON
- C++
- Algorithm
- django
- 코테
- 안드로이드
- 분할정복
- cos pro
- 백준
- DART
- codingtest
- vuejs
- cos
- DFS
- 알고리즘
- cos pro 1급
- Flutter
- 동적계획법과최단거리역추적
- 동적계획법
- Python
- 코딩테스트
- issue
Archives
- Today
- Total
Development Artist
FastAPI 설치시 함께 설치되는 라이브러리 톺아보기 본문
728x90
개요
FastAPI를 설치하면 다음과 같은 패키지들이 자동으로 설치됩니다. 각 패키지의 역할에 대해 자세히 알아보겠습니다.
annotated-types==0.7.0
anyio==4.9.0
fastapi==0.115.12
idna==3.10
pydantic==2.11.3
pydantic_core==2.33.1
sniffio==1.3.1
starlette==0.46.2
typing-inspection==0.4.0
typing_extensions==4.13.2
각 패키지 설명
1. fastapi==0.115.12
- 역할: 타입 힌트를 사용하는 고성능 Python 웹 프레임워크입니다. RESTful API 개발에 최적화되어 있습니다.
- 기반: Starlette (ASGI 웹 프레임워크) + Pydantic (데이터 유효성 검사)
- 특징:
- 자동 문서화: Swagger UI, ReDoc을 자동으로 생성하여 API 문서화 작업을 간소화합니다.
- 비동기 지원: async / await 키워드를 사용하여 비동기 코드를 작성할 수 있습니다.
- 의존성 주입 (Dependency Injection): 코드 재사용성 및 테스트 용이성을 향상시키는 의존성 주입 시스템을 제공합니다.
2. starlette==0.46.2
- 역할: FastAPI의 내부 HTTP 코어 프레임워크입니다.
- 기능:
- 라우팅: URL 경로에 따라 적절한 함수를 실행합니다.
- 미들웨어: 요청 및 응답 처리에 관여하여 로깅, 인증 등의 공통 기능을 처리합니다.
- WebSocket: 실시간 양방향 통신을 지원합니다.
- 백그라운드 작업: HTTP 요청 외부에서 실행되는 작업을 처리합니다.
- 기원: Django REST Framework의 개발자인 Tom Christie가 만들었습니다.
3. pydantic==2.11.3
- 역할: Python 객체의 타입 기반 데이터 유효성 검사 및 직렬화를 수행합니다.
- 기능:
- BaseModel을 통한 스키마 정의: 데이터 모델의 구조와 타입을 정의합니다.
- 자동 JSON 변환: Python 객체와 JSON 데이터 간의 자동 변환을 처리합니다.
- 기원: "Parsing + Validation = Pydantic" 슬로건으로, Samuel Colvin이 개발했습니다.
4. pydantic_core==2.33.1
- 역할: Pydantic v2의 Rust 기반 유효성 검사 엔진입니다. 속도 및 메모리 사용량을 최적화합니다.
- 특징: Rust로 구현된 바이너리 모듈입니다.
5. annotated-types==0.7.0
- 역할: Annotated 타입에 사용되는 메타데이터 타입을 제공합니다.
- 기원: typing.Annotated는 Python 3.9부터 도입되었으며, Pydantic 2에서 이를 활용하여 더욱 강력한 유효성 검사를 수행할 수 있습니다.
- 예시:
- from typing import Annotated from annotated_types import Ge, Le age: Annotated[int, Ge(0), Le(120)] # 0 이상 120 이하
6. typing-inspection==0.4.0
- 역할: Python 타입 힌트의 내부 구조를 검사하는 기능을 제공합니다.
- 기원: 복잡한 타입 힌트의 내부 구조를 파악해야 할 때 유용합니다.
7. typing_extensions==4.13.2
- 역할: 이전 버전의 Python에서 typing 모듈의 최신 기능을 사용할 수 있도록 지원합니다.
- 기원: Literal, TypedDict, Annotated와 같은 기능을 Python 3.9 이전 버전에서도 사용할 수 있게 해줍니다.
8. anyio==4.9.0
- 역할: 여러 비동기 라이브러리(asyncio, trio)에서 공통으로 사용할 수 있는 인터페이스를 제공하여, 비동기 코드의 이식성을 높입니다. 즉, asyncio나 trio 중 어느 것을 사용하더라도 anyio를 통해 작성된 코드는 동일하게 작동할 수 있습니다.
- 기원: Trio에서 영감을 받아 여러 비동기 루프와의 호환성을 제공하기 위해 개발되었습니다. asyncio 외에 다른 비동기 라이브러리를 사용하는 경우에도 원활하게 통합될 수 있도록 설계되었습니다.
- FastAPI에서: WebSocket, 백그라운드 작업 등, FastAPI의 비동기 기능을 구현하는 기반이 됩니다. FastAPI는 anyio를 통해 다양한 비동기 실행 환경을 추상화하고, 개발자에게 일관된 비동기 프로그래밍 경험을 제공합니다.
9. sniffio==1.3.1
- 역할: 현재 실행 중인 비동기 이벤트 루프를 감지합니다. anyio가 어떤 이벤트 루프(asyncio 또는 trio)에 연결해야 하는지 자동으로 파악하는 데 사용됩니다.
- 기원: anyio가 어떤 이벤트 루프에 연결해야 하는지 파악하기 위해 사용됩니다. sniffio는 실행 환경을 '스니핑'하여 적절한 이벤트 루프를 식별하고, anyio가 해당 루프와 상호 작용할 수 있도록 돕습니다.
10. idna==3.10
- 역할: 국제화된 도메인 이름(IDN)을 인코딩/디코딩합니다. (예: "도메인.한국"과 같은 한국어 도메인 주소를 처리)
- 사용처: httpx, requests와 같은 HTTP 클라이언트에서 국제화된 URL을 처리할 때 사용됩니다. idna는 이러한 클라이언트가 다양한 언어의 문자를 포함하는 도메인 이름을 올바르게 처리하도록 지원하며, 이는 FastAPI 애플리케이션이 외부 서비스와 통신할 때 중요합니다.
요약 도식
📂 FastAPI
│
┌──────────────────┐
│ │
Starlette Pydantic(Core)
│ │
AnyIO ↔ Sniffio typing-inspection
│ │
typing_extensions annotated-types
728x90
'Research > General' 카테고리의 다른 글
GoF 디자인 패턴 총정리 (0) | 2025.04.23 |
---|---|
[IntelliJ IDEA, Mac] Spring Boot 프로젝트 단축키 (0) | 2023.08.21 |
Comments