테스트, 배포, 성능 최적화 - Part 3
·
파이썬/Fast API
테스트 구현테스트는 애플리케이션의 안정성을 보장하는 핵심입니다. pytest를 활용하여 체계적인 테스트를 구현해보겠습니다.# tests/conftest.pyimport pytestfrom httpx import AsyncClientfrom sqlalchemy.ext.asyncio import AsyncSession, create_async_enginefrom sqlalchemy.orm import sessionmakerfrom app.main import appfrom app.api import depsfrom app.db.base import BaseTEST_DATABASE_URL = "postgresql+asyncpg://test:test@localhost/test_db"@pytest.fixture(..
라우터 구현과 에러 처리 - Part 2
·
파이썬/Fast API
라우터 구조화대규모 애플리케이션에서는 라우터를 체계적으로 구성하는 것이 중요합니다. 버전별, 기능별로 라우터를 분리하여 관리합니다.# app/api/v1/router.pyfrom fastapi import APIRouterfrom app.api.v1.endpoints import user, itemapi_router = APIRouter()api_router.include_router( user.router, prefix="/users", tags=["users"])api_router.include_router( item.router, prefix="/items", tags=["items"])# app/api/v1/endpoints/user.pyfrom fastapi im..
프로젝트 구조와 기본 설정 - Part 1
·
파이썬/Fast API
이 시리즈에서는 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 파라미터
·
파이썬/Fast API
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의 출..
[REST API] RESTful API 설계 가이드
·
TypeScript
REST API는 현대 웹 서비스 개발에서 가장 널리 사용되는 아키텍처 스타일입니다. 이 글에서는 REST API의 핵심 개념부터 실제 설계 방법까지 상세히 다뤄보겠습니다.REST API의 기본 원칙REST(Representational State Transfer)는 다음 6가지 기본 원칙을 따릅니다:Uniform InterfaceStatelessCacheableClient-Server 구조Layered SystemCode on Demand (선택사항)RESTful한 URI 설계하기REST API에서 가장 중요한 것은 리소스를 어떻게 정의하고 표현하느냐입니다. 다음은 실제 프로젝트에서 자주 사용되는 URI 설계 예시입니다.# 좋은 URI 설계 예시GET /users # 사용자..
[FastAPI] add_api_route로 동적 라우팅 구현
·
파이썬/Fast API
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 상속과 타입 어노테이션 활용
·
파이썬/Fast API
소개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 Header 다루기] fetch API의 Headers 인터페이스
·
TypeScript
소개HTTP 요청 시 헤더를 다루는 두 가지 주요 방법 - 직접 객체로 전달하는 방법과 Headers 인터페이스를 사용하는 방법에 대해 자세히 알아보겠습니다.1. 기본적인 헤더 설정// 단순 객체로 헤더 전달const fetchData = async (url: string) => { try { const response = await fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', } }); return await response.json(); } catch (error) { console...