코드의 여백

[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 Official Web Site

 

FastAPI

FastAPI framework, high performance, easy to learn, fast to code, ready for production

fastapi.tiangolo.com

블로그의 정보

코드의 여백

rowing0328

활동하기