[FastAPI] 파이썬으로 웹 API 개발 시작하기
by rowing0328※ 이 글은 이노그리드 교육 과정의 일부로, 저만의 관점과 해석을 더해 작성되었습니다.
Intro
파이썬으로 웹 서비스를 만들고 싶을 때 가장 먼저 떠오르는 것이 Django나 Flask지만,
최근에는 FastAPI가 빠르게 인기를 얻고 있다.
"빠르다"는 이름처럼, 단순한 API 서버부터 복잡한 서비스까지
정말 빠르게 만들 수 있다는 것이 장점이다.
이번 글에서는 FastAPI와 실행 서버인 uvicorn을 활용해
웹 API를 만드는 가장 기본적인 방법을
처음 접하는 사람도 이해할 수 있도록 차근차근 정리해 보겠다.
웹 API란 무엇일까?
웹 API는 쉽게 말해서
"서버와 데이터를 주고받는 창구"다.
예를 들어,
사이트에서 회원 정보를 가져오거나
외부 서비스와 데이터를 연결해야 하는 경우처럼
서버와 데이터를 주고받은 상황에서 웹 API가 중요한 역할을 한다.
파이썬에서는 여러 프레임워크가 있지만,
FastAPI는 빠른 속도, 간결한 코드, 자동 문서화가 특징이다.
FastAPI를 선택하는 이유
- 빠르다!
비동기 지원으로 요청 처리 속도가 훨씬 빠르다. - 코드가 간결하다
파이썬 타입 힌트만 알면 배우기 쉽다. - 자동 문서화 제공
API 명세가 자동으로 생성되어, 개발 및 테스트가 쉽다. - 비동기 처리와 최신 파이썬 문법 지원
FastAPI + uvicorn = 빠르고 간단한 서버
FastAPI 자체는 웹 프레임워크이고,
실제 실행은 uvicorn이라는 서버가 담당한다.
- FastAPI
"내가 어떤 요청을 받으면, 어떤 응답을 줄지"를 정의한다. - uvicorn
"실제로 네트워크에서 요청을 받아 FastAPI에게 넘기고, 응답을 돌려주는" 역할
쉽게 말해,
FastAPI는 식당 주방장,
uvicorn은 홀 서빙 직원이라고 생각하면 쉽다.
내 손으로 FastAPI 기본 API 만들어보기
1. 설치하기
먼저 가상환경(이전 글 참고) 안에서 아래 명령어로 필요한 라이브러리를 설치한다.
pip install fastapi uvicorn
2. 첫 FastAPI 코드 작성
아주 간단한 "Hello, FastAPI!" 서버를 만들어보자.
main.py라는 파일을 만든다.
[ 예제 코드 ]
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI!"}
- app = FastAPI()
내 API 앱을 하나 만든다. - @app.get("/")
"/"라는 주소로 GET 요청이 들어오면 아래 함수를 실행한다는 의미이다. - 함수는 딕셔너리(JSON)로 응답을 반환한다.
3. 서버 실행하기 (uvicorn)
터미널에서 아래와 같이 실행한다.
[ 예제 코드 ]
uvicorn main:app --reload
- main
내 코드 파일 이름 (main.py) - app
FastAPI 객체의 이름 - --reload
코드가 바뀔 때마다 서버가 자동으로 재시작(개발할 때 필수!)
실행 후, 브라우저에서 http://localhost:8000/ 으로
접속해 보면 정의한 {"message": "Hello, FastAPI!"} 가 나온다.
자동 문서화 - 개발자가 감동하는 순간
FastAPI를 쓰는 사람들이 가장 좋아하는 기능 중 하나는
자동 API 문서 페이지다.
실행 중에 아래 주소로 들어가 보면
- http://localhost:8000/docs
- http://localhost:8000/redoc
Swagger UI가 뜨면서
내가 만든 API가 자동으로 정리된 문서 페이지가 생긴다!
게다가 직접 테스트도 가능하다 😢
조금 더 - GET/POST 방식 추가해 보기
- GET
값을 읽어오기 - POST
값을 서버로 보내기
두 가지 예를 더 들어보자.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
# GET 예시
@app.get("/hello/{name}")
def hello_name(name: str):
return {"message": f"Hello, {name}!"}
# POST 예시 (데이터를 body로 받기)
class Item(BaseModel):
name: str
price: float
@app.post("/items/")
def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
- GET 방식은 주소에 값을 넣어 보내면 됨 (예: /hello/철수)
- POST 방식은 JSON 데이터(body)로 값을 보낸다.
마무리 - 생각보다 쉽고 강력하다
FastAPI와 uvicorn을 사용해 보면
웹 API 만들기가 생각보다 훨씬 쉽다는 걸 알 수 있다.
파이썬만 조금 다룰 줄 알면
몇 줄 코드로
내 데이터와 기능을 인터넷으로 공개할 수 있는 것이다.
앞으로는 모델을 API로 공개하거나,
간단한 웹서비스, 팀 프로젝트의 백엔드를 구출할 때도
FastAPI와 uvicorn이면 쉽고 빠르게 시작할 수 있다.
Tip!
실제 프로젝트 할 때는
가상환경을 사용해 개발 환경을 분리하고
requirements.txt 파일로 필요한 라이브러리를 관리하는 습관이 중요하다.
이 두 가지만 잘 지켜도
협업도 쉬워지고, 배포도 훨씬 수월해진다.
참고 자료:
FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi.tiangolo.com
'🌈Programming > FastAPI' 카테고리의 다른 글
[FastAPI] Todo 예제로 배우는 RESTful API 설계 (0) | 2025.05.20 |
---|---|
[FastAPI] APIRouter로 라우팅 구조화하기 (0) | 2025.05.19 |
블로그의 정보
코드의 여백
rowing0328