파이썬
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..
[Web API] URL 파라미터 데이터 전송
소개웹 개발에서 클라이언트와 서버 간의 데이터 전송 방식 중 하나인 URL 파라미터 방식에 대해 자세히 알아보겠습니다. 이 방식의 장단점, 보안 고려사항, 그리고 프론트엔드에서의 구현 방법까지 상세히 다루겠습니다.URL 파라미터의 종류Path Parameters/api/users/{user_id}/posts/{post_id}리소스를 식별하는 데 사용URL 경로의 일부로 포함필수 값으로 처리됨Query Parameters/api/users?role=admin&status=active필터링, 정렬, 페이지네이션에 사용? 뒤에 key=value 형태로 추가선택적 값으로 처리됨프론트엔드 구현fetch API 사용// Path Parameters 사용const getUserDetails = async (userI..
[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..
requests vs aiohttp - HTTP 요청의 모든 것
소개Python에서 HTTP 요청을 처리할 때 가장 많이 사용되는 두 라이브러리인 requests와 aiohttp의 매개변수와 사용법을 자세히 비교해보겠습니다.설치 방법# requests 설치pip install requests# aiohttp 설치pip install aiohttprequests 라이브러리의 주요 매개변수GET 요청import requestsresponse = requests.get( url="https://api.example.com/data", params={'key': 'value'}, # URL 쿼리 파라미터 headers={'Authorization': 'Bearer token'}, # 요청 헤더 cookies={'session':..
[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-..
파이썬 개발을 위한 VSCode 셋팅 가이드
소개VSCode에서 Python 개발을 할 때, 적절한 settings.json 설정은 개발 경험을 크게 향상시킬 수 있습니다. 오늘은 각 설정의 의미와 효과를 자세히 알아보겠습니다.Type Hint 관련 설정인레이 힌트 설정{ "python.analysis.inlayHints.variableTypes": true, "python.analysis.inlayHints.functionReturnTypes": true}이 설정들은 코드 에디터에 타입 정보를 직접 표시해줍니다. 예시:# 설정 전name = "John"def get_age(): return 25# 설정 후name: str = "John"def get_age() -> int: return 25자동 저장 및 포매팅 설정{ ..
함수 하나로 여러 가지 처리하기? Python 오버로딩
소개안녕하세요! 오늘은 Python에서 오버로딩을 구현하는 방법에 대해 알아보겠습니다. 오버로딩이란 무엇이고, 왜 필요한지부터 차근차근 설명드리겠습니다.오버로딩이란?오버로딩은 같은 이름의 함수나 메서드가 다른 매개변수를 받아 다르게 동작하도록 하는 기능입니다. 쉽게 말해서, 하나의 함수가 여러 가지 일을 할 수 있게 만드는 것입니다.실생활 예시계산기를 생각해봅시다:두 숫자를 더할 수도 있고세 숫자를 더할 수도 있고숫자와 문자를 연결할 수도 있죠오버로딩 방법1. singledispatch 사용하기from functools import singledispatch@singledispatchdef greet(arg): print(f"무언가를 받았어요: {arg}")@greet.register(str)def..
자료구조 : deque, Queue, heapq
소개Python에서 제공하는 자료구조인 collections.deque, queue.Queue, heapq의 특징과 활용법을 자세히 알아보겠습니다. 각 자료구조의 성능 특성과 적합한 사용 사례를 살펴보겠습니다.collections.dequedeque(double-ended queue)는 양쪽 끝에서 빠른 삽입과 삭제가 가능한 자료구조입니다.시간 복잡도연산시간 복잡도앞/뒤 삽입/삭제O(1)임의 접근O(n)길이 확인O(1)예시from collections import deque# 기본 사용법d = deque([1, 2, 3, 4, 5])d.append(6) # 오른쪽 끝에 추가d.appendleft(0) # 왼쪽 끝에 추가d.pop() # 오른쪽 끝에서 제거d.pople..