FastAPI 기초문법 완벽정리(Flask와 비교 포함)

안녕하세요! 이번 글에서는 요즘 뜨겁게 주목받는 파이썬 웹 프레임워크인 FastAPI의 기초 문법을 Flask와 비교하면서 쉽고 빠르게 배워보겠습니다. 기초부터 차근차근 따라가시면 금방 나만의 웹 애플리케이션을 만들 수 있을 거예요!

FastAPI란

FastAPI는 파이썬으로 만들어진 빠르고 간편한 웹 프레임워크입니다. 특히 RESTful API 개발에 강력하며, 성능이 뛰어나고 코드가 직관적이라 개발자들이 선호하고 있습니다.

주요 특징은 다음과 같습니다.
빠른 성능: Node.js나 Go 수준의 성능을 제공합니다.
간단한 사용법: 직관적인 문법과 자동 문서화 기능이 있습니다.
비동기 지원: 비동기(Async) 작업을 손쉽게 처리할 수 있습니다.

환경설정 (빠르게 따라하기)

먼저 FastAPI를 사용하려면 Python과 FastAPI, 그리고 Uvicorn(서버)이 필요합니다.

설치하기

pip install fastapi uvicorn

기본 애플리케이션 만들기

아래와 같이 main.py 파일을 생성하고 코드를 입력해 주세요.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

서버 실행하기

다음 명령어로 서버를 실행할 수 있습니다.

uvicorn main:app --reload

브라우저에서 http://127.0.0.1:8000으로 접속하면 간단한 JSON 결과를 볼 수 있습니다.

FastAPI 기본 문법 이해하기(Flask 비교 포함)

경로 및 HTTP 메서드 설정하기

FastAPI는 경로와 메서드를 쉽게 정의할 수 있습니다.

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}
  • {item_id}처럼 경로 매개변수를 설정할 수 있습니다.
  • FastAPI는 자동으로 매개변수 타입을 체크합니다.

Flask 또한 문법과 정의가 비슷합니다.

@app.route("/items/<int:item_id>")
def read_item(item_id):
    return {"item_id": item_id}

요청 데이터 다루기

FastAPI POST 요청을 처리하는 방법은 아래와 같습니다.

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str

@app.post("/items/")
def create_item(item: Item):
    return item
  • BaseModel을 사용해 데이터 모델을 쉽게 정의할 수 있습니다.

Flask 표현 방식은 아래와 같습니다.

from flask import request, jsonify

@app.route('/items/', methods=['POST'])
def create_item():
    data = request.get_json()
    return jsonify(data)

쿼리 매개변수 사용하기

쿼리 매개변수를 사용하는 방법입니다.

@app.get("/items/")
def read_items(skip: int = 0, limit: int = 10):
    return {"skip": skip, "limit": limit}
  • URL 예시: /items/?skip=10&limit=20

Flask 예시

@app.route('/items/')
def read_items():
    skip = request.args.get('skip', default=0, type=int)
    return {"skip": skip}

응답 상태 코드 설정하기

응답 상태 코드를 사용자 지정할 수 있습니다.

from fastapi import status

@app.post("/items/", status_code=status.HTTP_201_CREATED)
def create_item(item: Item):
    return item

자동 API 문서화 기능

FastAPI의 가장 큰 장점 중 하나는 자동 문서화입니다. 아래 주소로 들어가면 자동으로 생성된 API 문서를 볼 수 있습니다.

  • Swagger UI: http://127.0.0.1:8000/docs
  • ReDoc: http://127.0.0.1:8000/redoc

Flask는 별도 확장 플러그인을 사용합니다. (Flask-RESTFul 등)

python 기본 문법

마치며

지금까지 FastAPI의 기본적인 문법과 활용 방법 및 간단하게 Flask와 비교도 하는 시간이었습니다. 기초 문법만 익히면 누구나 쉽게 웹 API를 만들 수 있습니다. 다음편에는 FastAPI에 다루는 여러 기능들에 대해 다루어보고자 합니다. 이제 여러분도 자신만의 멋진 프로젝트를 시작해 보시길 바랍니다.

Spring Boot 개발 환경 구축

Leave a Comment