FastAPI는 파이썬에서 사용되는 고성능 마이크로 웹 프레임워크로, 주로 RESTful API를 빠르고 쉽게 만들기 위해 설계되었습니다. FastAPI는 속도와 생산성, 자동 문서화, 타입 안전성을 강조하며, 최신 파이썬 기능(특히 타이핑 기능)을 활용하는 것이 특징입니다. 이 프레임워크는 ASGI(Asynchronous Server Gateway Interface)를 기반으로 비동기 처리를 지원하며, 비동기 웹 애플리케이션 개발에 최적화되어 있습니다.
아래에서는 FastAPI의 특징, 구조, 그리고 예제 코드를 통해 어떻게 활용할 수 있는지 설명하겠습니다.
1. FastAPI의 주요 특징
1.1. 빠른 성능
- Starlette와 Pydantic 라이브러리를 기반으로 구축되어, 비동기적 처리를 지원함으로써 매우 빠른 속도를 자랑합니다.
- 성능 면에서 FastAPI는 Node.js, Go와 비슷한 수준으로 평가받고 있습니다.
1.2. 타입 힌트 기반
- FastAPI는 파이썬의 타입 힌트를 적극적으로 사용하여 코드를 작성할 때 자동으로 데이터 검증, 변환 및 문서화를 지원합니다. 이를 통해 더 안전하고 명확한 코드를 작성할 수 있습니다.
- 타입 힌트를 기반으로 API 입력 값의 유효성을 검사하고, 자동으로 Swagger 및 ReDoc을 통해 API 문서를 생성합니다.
1.3. 자동 API 문서화
- FastAPI는 기본적으로 Swagger UI와 ReDoc을 사용하여 자동으로 API 문서를 생성합니다. 이를 통해 API를 쉽게 테스트하고 문서화할 수 있습니다.
1.4. 비동기 지원
- FastAPI는 기본적으로 비동기 함수(
async
)를 지원합니다. 이를 통해 I/O가 많은 작업(예: 데이터베이스 접근, 외부 API 호출 등)에서 성능을 극대화할 수 있습니다.
1.5. 쉬운 데이터 검증
- Pydantic을 사용하여 데이터 검증 및 변환을 간단하게 처리할 수 있습니다. FastAPI는 Pydantic 모델을 활용하여 요청과 응답 데이터를 쉽게 정의할 수 있습니다.
2. FastAPI의 구조
FastAPI는 다음과 같은 요소들로 구성됩니다:
- 엔드포인트 정의: FastAPI는
@app.get()
,@app.post()
등의 데코레이터를 사용하여 간단하게 API 엔드포인트를 정의합니다. - 비동기 함수 지원: 비동기 처리를 위해
async
키워드를 사용하며, 비동기 함수에서 I/O를 효율적으로 처리합니다. - 경로 매개변수: 경로에 포함된 변수들을 함수의 매개변수로 쉽게 처리할 수 있습니다.
- 쿼리 매개변수 및 요청 본문 처리: 요청에서 쿼리 파라미터 및 JSON 본문을 자동으로 매핑하고 검증합니다.
- 응답 모델: API 응답 데이터를 Pydantic 모델로 정의하여, 명시적인 데이터 구조를 가집니다.
3. FastAPI 설치 및 예제 코드
3.1. FastAPI 설치
FastAPI는 다음 명령어로 설치할 수 있습니다:
pip install fastapi
pip install "uvicorn[standard]"
uvicorn
은 FastAPI 애플리케이션을 실행하기 위한 ASGI 서버입니다.
3.2. 간단한 FastAPI 예제
아래는 기본적인 FastAPI 애플리케이션을 구현한 예제입니다.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
# 요청 본문에 대한 모델 정의
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
# 루트 엔드포인트
@app.get("/")
async def read_root():
return {"message": "Hello, FastAPI"}
# 경로 매개변수
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
# POST 요청 처리
@app.post("/items/")
async def create_item(item: Item):
return {"name": item.name, "price": item.price}
3.3. FastAPI 애플리케이션 실행
FastAPI 애플리케이션을 실행하려면 다음 명령어를 터미널에서 실행합니다:
uvicorn main:app --reload
main:app
은main.py
파일에 정의된app
객체를 참조한다는 의미입니다.--reload
옵션은 코드가 변경될 때마다 서버를 자동으로 다시 시작하도록 합니다.
3.4. FastAPI 자동 문서화
애플리케이션이 실행된 후 브라우저에서 다음 URL로 접근하여 자동으로 생성된 API 문서를 확인할 수 있습니다:
- Swagger UI:
http://127.0.0.1:8000/docs
- ReDoc:
http://127.0.0.1:8000/redoc
이 문서는 FastAPI가 제공하는 데이터와 엔드포인트를 쉽게 확인하고 테스트할 수 있는 인터페이스를 제공합니다.
4. FastAPI의 주요 기능
4.1. 경로 매개변수
FastAPI는 경로 내에서 변수 값을 쉽게 처리할 수 있습니다. 예를 들어, 경로 /items/{item_id}
에 item_id
라는 경로 매개변수를 전달받을 수 있습니다.
4.2. 쿼리 매개변수
쿼리 매개변수는 URL의 ?
뒤에 나오는 값을 처리하는 데 사용됩니다. 예를 들어, /items/{item_id}?q=somequery
에서 q
는 쿼리 매개변수입니다.
4.3. 요청 본문 처리
POST 요청에서 JSON 형태의 데이터를 받기 위해서는 Pydantic
모델을 정의하고, 이를 통해 데이터를 자동으로 검증하고 변환할 수 있습니다.
4.4. 응답 모델
FastAPI는 응답 데이터 구조를 명시적으로 정의할 수 있습니다. 이를 통해 API 응답 데이터를 명확하게 관리하고 문서화할 수 있습니다.
5. FastAPI의 응용
FastAPI는 간단한 REST API부터 대규모 백엔드 서비스까지 다양한 용도로 활용될 수 있습니다. 특히 비동기 처리를 지원하여, 성능이 중요한 애플리케이션(예: 실시간 서비스, API 게이트웨이 등)에 적합합니다.
- 대규모 웹 서비스: FastAPI는 확장성과 속도를 고려하여 설계되었기 때문에, 고성능 API 서버나 마이크로서비스 아키텍처를 구축하는 데 적합합니다.
- 데이터 검증 및 API 문서화: 자동으로 생성되는 API 문서와 데이터 검증 기능 덕분에, 다양한 데이터 처리 애플리케이션에서도 편리하게 사용할 수 있습니다.
결론
FastAPI는 빠른 개발 속도와 고성능을 제공하는 파이썬 기반의 웹 프레임워크로, 최신 파이썬 기능을 적극적으로 활용하여 API 개발을 효율적으로 수행할 수 있도록 도와줍니다. 또한 자동화된 문서화와 쉬운 데이터 검증 기능을 통해 개발자의 생산성을 극대화할 수 있습니다.
'마이크로 웹 프레임워크' 카테고리의 다른 글
[마이크로 웹 프레임워크] 파이썬 Sanic 프레임워크란? (0) | 2024.10.20 |
---|---|
[마이크로 웹 프레임워크] Falcon 고성능 웹 프레임워크 1 (4) | 2024.10.19 |
[마이크로 웹 프레임워크] 파이썬 Bottle 웹 프레임워크 1 (2) | 2024.10.17 |
[마이크로 웹 프레임워크] 마이크로 웹 프레임워크의 특징 (2) | 2024.10.17 |
[마이크로 웹 프레임워크] 플라스크 소개 및 예제 1 (0) | 2024.10.16 |