FastAPI 사용기
FastAPI 사용기
사용하게 된 계기
연말 프로젝트 마일스톤상 일정의 틈이 생겨 소규모 프로젝트를 진행하게 되었습니다.
해당 프로젝트는 게임의 커뮤니티 평가들을 수집하여 기간별로 LLM을 활용해서 요약하고 분석해 주는 기능을 하는 툴이였습니다.
LLM 관련 라이브러리가 가장 잘 정리된 언어가 python이였기 때문에 python으로 개발하고자 했습니다.
처음에는 예전에 해본 django를 사용하고자 했지만 왠지 새로나온 FastAPI를 이번 기회에 써보고자 했고 마이크로 프로젝트였기에 부담없이 채택했습니다.
일단 평가는 매우만족 입니다.!
우선 가장 편한점은 코드 작성 속도가 매우 매우 증가합니다.
그리고 문서화가 너무 잘되어 있기 때문에 런닝 커브도 거의 없다 싶이하다고 생각합니다.
성능 적으로도 비동기작업을 처리하는 속도또한 매우 빨랐고, 타입시스템 데이터 모델 라이브러리가 있어서 API를 작성시에도 도움이 많이 되었습니다.
상대적으로 다른 백엔드프레임워크에 비해 역사가 짧지만 매우 만족스러운 툴이라고 생각하고, 마이크로 프로젝트에서는 1순위로 고려할것 같습니다.
포스트 예시 코드
from fastapi import FastAPI
from pydantic import BaseModel
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
# 데이터 모델 정의
class Post(BaseModel):
id: int
title: str
content: str
published_at: datetime
tags: Optional[list[str]] = []
# 라우터
app = FastAPI()
posts = []
post_id = 0
@app.post("/posts/")
def create_post(post: Post):
global post_id
post_id += 1
post.id = post_id
posts.append(post)
return {"message": "Post created successfully"}
@app.get("/posts/{post_id}")
def get_post(post_id: int):
post = next((post for post in posts if post.id == post_id), None)
if post is None:
raise HTTPException(status_code=404, detail="Post not found")
return post