FastAPI란 무엇인가?
FastAPI는 “빠르고, 간단하고, 자동 문서화되는 파이썬 API 서버 프레임워크” 이다. https://fastapi.tiangolo.com/
핵심 특징 4가지:
- 빠르다 (Go나 Node.js 수준)
- 타입 힌트를 사용한 자동 검증
- Swagger UI 문서 자동 제공
- 비동기(Async) 자동 지원
그래서 REST API, ML 모델 서빙, 백엔드 API 서버로 많이 사용됨.
참고 페이지 : https://wikidocs.net/175092
FastAPI의 핵심 3가지.
1) FastAPI() 객체 생성
2) @app.get(), @app.post()로 API 라우터 설정
3) 함수에서 반환한 값이 바로 응답(Response)
*** 간단한 FastAPI 예제
--- main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def home():
return {"message": "안녕! FastAPI 첫 시작입니다!"}
--- 실행 방법
터미널에서 uvicorn main:app --reload
출력: Uvicorn running on http://127.0.0.1:8000
브라우저에 들어가면 http://127.0.0.1:8000/
{
"message": "안녕! FastAPI 첫 시작입니다!"
}
* FastAPI의 자동 문서화 (Swagger UI) : 브라우저에서 http://127.0.0.1:8000/docs 하면 자동으로 API 문서가 생김.
* FastAPI는 왜 자동 문서가 만들어질까?
FastAPI는 Python 타입 힌트, Pydantic 데이터 모델, OpenAPI 스펙을 기반으로 엔드포인트를 분석해서 API 문서를 자동 생성해준다.
*** 조금 더 확장된 간단 예제 (POST + 데이터 모델)
--- main.py
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
# 입력 데이터 모델
class Item(BaseModel):
name: str
price: float
in_stock: bool = True
@app.post("/items")
def create_item(item: Item):
return {
"message": "상품이 성공적으로 추가되었습니다.",
"data": item
}
▶ 테스트하기 : Swagger UI에서 바로 테스트 가능. http://127.0.0.1:8000/docs
요청 본문 예시:
{
"name": "Keyboard",
"price": 45.5,
"in_stock": true
}
응답:
{
"message": "상품이 성공적으로 추가되었습니다.",
"data": {
"name": "Keyboard",
"price": 45.5,
"in_stock": true
}
}
* FastAPI를 이해하는 핵심 요약
개념 설명
FastAPI() API 서버 객체
@app.get(), @app.post() HTTP 경로/메서드 지정
함수 return 값 JSON 형태로 자동 변환
Pydantic BaseModel 자동 데이터 검증
/docs Swagger UI 자동 생성
비동기 지원 async def 가능
한 마디로 FastAPI는 "간단한데 강력한" API 서버다. LLM API 서버, RAG API, MSA 서비스 간 API, 자율주행 MiniCar 관측값 서버, 교육용 백엔드 등과 같은 작업에 FastAPI는 적합한 선택이라 할 수 있다.