파이썬/Fast API
프로젝트 구조와 기본 설정 - Part 1
이 시리즈에서는 FastAPI의 모범 사례를 기반으로 확장 가능하고 유지보수가 쉬운 애플리케이션을 설계하는 방법을 알아보겠습니다.프로젝트 구조 설계첫 번째로 다룰 내용은 프로젝트 구조입니다. 잘 설계된 구조는 프로젝트의 확장성과 유지보수성을 크게 향상시킵니다.├── app/│ ├── api/│ │ ├── v1/│ │ │ ├── endpoints/│ │ │ │ ├── user.py│ │ │ │ └── item.py│ │ │ └── router.py│ │ └── deps.py│ ├── core/│ │ ├── config.py│ │ └── security.py│ ├── db/│ │ ├── session.py│ ..
[FastAPI] add_api_route 파라미터
FastAPI의 add_api_route는 매우 강력한 기능을 제공하지만, 많은 매개변수로 인해 처음에는 이해하기 어려울 수 있습니다. 각 매개변수의 역할과 실제 활용 방법에 대해 알아보겠습니다.필수 매개변수 이해하기from fastapi import FastAPI, Responsefrom typing import List, Dict, Anyapp = FastAPI()# 기본적인 매개변수 사용app.add_api_route( path="/users", # 엔드포인트 경로 endpoint=get_users, # 실행될 함수 methods=["GET"] # HTTP 메서드)응답 관련 매개변수응답 형식과 관련된 매개변수들은 API의 출..
[FastAPI] add_api_route로 동적 라우팅 구현
FastAPI를 사용하면서 동적으로 라우트를 추가해야 하는 경우가 종종 있습니다. 이럴 때 사용할 수 있는 것이 바로 add_api_route 메서드입니다. 일반적으로 데코레이터를 사용하는 방식과는 다르게, 프로그래밍 방식으로 라우트를 추가할 수 있어 유연한 API 설계가 가능합니다.add_api_route 기본 사용법가장 기본적인 사용법부터 살펴보겠습니다. 데코레이터 방식과 비교하면 다음과 같습니다.from fastapi import FastAPIapp = FastAPI()# 데코레이터 방식@app.get("/users/{user_id}")async def get_user(user_id: int): return {"id": user_id}# add_api_route 방식async def get_u..
Pydantic 상속과 타입 어노테이션 활용
소개Pydantic은 Python의 타입 어노테이션을 활용하여 데이터 검증을 제공하는 강력한 라이브러리입니다. 이번 글에서는 Pydantic의 다양한 기능과 실전 활용법을 자세히 알아보겠습니다.기본 모델 구조BaseModel 상속과 기본 필드 정의from typing import Annotatedfrom pydantic import BaseModel, Fieldfrom datetime import datetimefrom bson import ObjectIdclass BaseItem(BaseModel): """ 모든 모델의 기본이 되는 베이스 클래스입니다. 모든 모델에 공통적으로 필요한 필드를 정의합니다. """ id: Annotated[ObjectId, Field(descrip..
[HTTP] 프론트엔드와 백엔드의 데이터 통신 Content-Type
소개HTTP 통신에서 Content-Type은 서버와 클라이언트 간에 주고받는 데이터의 형식을 지정하는 중요한 헤더입니다. 이번 글에서는 Content-Type의 모든 것을 상세히 알아보겠습니다.Content-Type이란?Content-Type은 HTTP 헤더의 일부로, MIME(Multipurpose Internet Mail Extensions) 타입을 사용하여 데이터의 형식을 지정합니다.주요 Content-Type 형식텍스트 형식// 일반 텍스트Content-Type: text/plain// HTMLContent-Type: text/html// CSSContent-Type: text/css// JavaScriptContent-Type: text/javascript애플리케이션 데이터// JSONCont..
[Pydantic] Field로 데이터 유효성 검사 마스터하기
소개FastAPI와 함께 자주 사용되는 Pydantic의 Field를 통해 데이터 유효성 검사를 구현하는 방법을 알아보겠습니다.설치 방법# pip 사용pip install pydantic# poetry 사용poetry add pydantic# pipenv 사용pipenv install pydantic기본 사용법간단한 모델 정의from pydantic import BaseModel, Fieldclass User(BaseModel): name: str = Field(..., min_length=2, max_length=50) age: int = Field(gt=0, lt=150) email: str = Field(..., pattern=r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-..
FastAPI : 병렬 처리로 API 성능 최적화
소개FastAPI 서버에서 여러 API 요청을 동시에 처리할 때, 요청 간 간섭이 발생하지 않도록 하는 것이 중요합니다. 이번 글에서는 FastAPI에서 병렬 처리를 구현하는 다양한 방법과 각각의 장단점을 알아보겠습니다.asyncio를 활용한 기본 병렬 처리asyncio는 파이썬의 기본 비동기 프로그래밍 라이브러리입니다. FastAPI는 내부적으로 해당 라이브러리를 사용하여 비동기 처리를 구현합니다.from fastapi import FastAPIimport asynciofrom typing import Listapp = FastAPI()async def process_data(data: dict) -> dict: """시간이 걸리는 작업을 시뮬레이션하는 함수""" await asyncio.s..
FastAPI 애플리케이션 성능 최적화와 캐싱
소개FastAPI는 이미 높은 성능을 제공하지만, 적절한 최적화와 캐싱 전략을 통해 더 나은 성능을 얻을 수 있습니다. 이번 글에서는 FastAPI 애플리케이션의 성능을 극대화하는 다양한 전략과 캐싱 구현 방법을 알아보겠습니다.데이터베이스 최적화SQLAlchemy 세션 관리# database.pyfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmaker, Sessionfrom contextlib import contextmanagerclass DatabaseManager: def __init__(self, url: str): self.engine = create_engine( url, ..