파이썬/Fast API

    FastAPI Response Set-Cookie와 HttpOnly 보안 구현

    FastAPI에서 HttpOnly 쿠키를 설정하여 보안을 강화하는 방법을 알아보겠습니다.기본 쿠키 설정from fastapi import FastAPI, Responsefrom fastapi.responses import JSONResponseapp = FastAPI()@app.post("/login")async def login(response: Response): # 기본적인 쿠키 설정 response.set_cookie( key="session", value="abc123", httponly=True, secure=True, samesite='lax', max_age=1800 # 30분 ) return..

    FastAPI Security: API 보안 구현

    # 기본 설치 (FastAPI에 포함되어 있음)pip install fastapi[all]pip install python-jose[cryptography] # JWT 토큰용pip install passlib[bcrypt] # 비밀번호 해싱용OAuth2 비밀번호 인증from fastapi import FastAPI, Depends, HTTPException, statusfrom fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestFormfrom jose import JWTError, jwtfrom passlib.context import CryptContext# 기본 설정oauth2_scheme = OAuth2PasswordBeare..

    SlowAPI: FastAPI에서 Rate Limiting 구현

    # 설치pip install slowapipip install redis # Redis 백엔드 사용시기본 Rate Limiting 설정from fastapi import FastAPIfrom slowapi import Limiter, _rate_limit_exceeded_handlerfrom slowapi.util import get_remote_addressfrom slowapi.errors import RateLimitExceededlimiter = Limiter(key_func=get_remote_address)app = FastAPI()app.state.limiter = limiterapp.add_exception_handler(RateLimitExceeded, _rate_limit_exceed..

    FastAPI Permissions: 권한 관리 구현

    # 설치pip install fastapi-permissions기본 권한 설정from fastapi_permissions import ( Allow, Deny, Everyone, Authenticated, configure_permissions, has_permission)class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) email = Column(String, unique=True) role = Column(String) def __acl__(self): return [ (Allow, "admin", "read"), ..

    FastAPI-Users with MongoDB: JWT 인증

    # 설치pip install fastapi-users[beanie]pip install motor기본 설정과 모델 정의from typing import Optionalfrom beanie import Documentfrom fastapi_users.db import BeanieBaseUserfrom pydantic import EmailStrclass User(BeanieBaseUser, Document): email: EmailStr hashed_password: str is_active: bool = True is_superuser: bool = False is_verified: bool = False class Settings: name = "users"..

    pyinstrument : 성능 최적화를 위한 프로파일링

    pyinstrument는 Python 코드의 성능을 프로파일링하는 강력한 도구입니다. 특히 FastAPI 애플리케이션에서 병목 현상을 찾고 성능을 최적화하는 데 매우 유용합니다. 기본 설정from fastapi import FastAPIfrom pyinstrument import Profilerfrom pyinstrument.middleware import ProfilerMiddlewareapp = FastAPI()# 전체 애플리케이션 프로파일링app.add_middleware(ProfilerMiddleware)# 특정 엔드포인트 프로파일링@app.get("/users/{user_id}")async def get_user(user_id: int): profiler = Profiler() pro..

    FastAPI 쿼리 매개변수

    쿼리 매개변수는 FastAPI에서 데이터를 전달받는 핵심적인 방법 중 하나입니다. 다양한 데이터 타입을 어떻게 처리하는지 자세히 알아보겠습니다.기본적인 쿼리 매개변수 사용from fastapi import FastAPI, Queryfrom typing import Optionalapp = FastAPI()@app.get("/items/")async def read_items( skip: Optional[int] = Query(default=0, ge=0), limit: int = Query(default=10, le=100), search: str = Query(default=None, min_length=3, max_length=50)): return { "skip":..

    FastAPI와 Nginx : 웹 서버 구성

    Nginx란 무엇인가?Nginx(엔진엑스)는 고성능 웹 서버이자 리버스 프록시, 로드 밸런서, HTTP 캐시로 사용되는 오픈 소스 소프트웨어입니다. 2004년 Igor Sysoev가 개발한 이후, 현재 전 세계 웹 서버 시장의 상당 부분을 차지하고 있습니다.주요 특징:비동기 이벤트 기반 아키텍처낮은 메모리 사용량높은 동시성 처리 능력정적 파일 서빙 최적화FastAPI에 Nginx가 필요한 이유리버스 프록시 기능# nginx.confserver { listen 80; server_name example.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; prox..