본문 바로가기

Python

(16)
[FastAPI] 비동기 프로그래밍 - Async/Await FastAPI의 비동기 프로그래밍 방식 - fastapi는 기본적으로 비동기 프로그래밍을 지원 - 내부적으로 스탈렉과 유비콘같은 ASGI를 사용하기 때문에 비동기 구현이 간단 asyncio (비동기 프로그래밍을 위한 라이브러리)비동기 i/o, 이벤트 루프, 코루틴네트워크 i/o와 같이 소요시간이 긴 작업들을 효율적으로 처리async비동기 함수는 coroutine이라 하며, await을 사용하여 호출await은 비동기 실행을 일시 정지하고 코루틴의 실행이 완료될 때까지 대기blocking 연산을 대기하는 동안 다른 코루틴이 실행될 수 있게 해주어 효율성 증가* 비동기와 병렬의 차이점비동기 : 작업들을 작은 단위로 나누어 번갈아가며 실행, 작업간의 전환을 빠르게 수행하여 여러 작업이 동시에 진행되는 것처럼 ..
[FastAPI] Pydantic FastAPI의 핵심 Pydantic에 대한 기초 문법 및 활용  Pydantic데이터 유효성 검사 및 직렬화자동 문서 생성   Pydantic 기본파이썬의 타입 힌팅을 기반으로 동작하여 데이터 유효성 검사, 구조 정의BaseModel ClassPydantic에서 모든 모델의 기본 클래스. 이를 상속 받아 사용자 정의 모델을 생성BaseModel을 사용하여 데이터의 구조, 타입, 기본값 등을 정의자동 데이터 유효성 검사 등이 구현되어 있는 클래스타입 힌트 필드는 변수에 타입 힌트를 사용하여 정의필드에 기본 값을 지정해줄 수 있음 (이 경우 선택적 필드)인스턴스 생성 시 자동으로 데이터 유효성 검사json() 메서드로 json 형태로 직렬화 parse_raw() 메서드로 json을 pydantic 모델 인..
[FastAPI] 파라미터 (작성중) FastAPI 에서 다양한 파라미터를 전달 받는 여러가지 방식 - 경로, 쿼리, 폼, 헤더, 본문, 쿠키 경로 매개변수URL 경로의 일부로, 동적으로 변화되는 값을 받기 위해 사용/item/{item_id} 와 같이 동적으로 변경되는 값을 함수의 인자로 사용  쿼리 매개변수경로 매개변수와 유사하지만 URL의 "?" 뒤에 키-값 형태로 데이터를 전달/item/?skip=20&limit=5동일한 이름의 매개변수 여러개를 리스트 형태로 전달 가능  요청 본문클라이언트가 서버로 보내는 데이터를 담고 있는 부분POST, PUT, PATCH와 같은 메서드에서 주로 사용동일한 이름의 매개변수 여러개를 리스트 형태로 전달 가능헤더엔 콘텐츠 타입, 인증 등이 포함되고 바디(본문)엔 데이터가 포함fastapi 라이브러리의..
[FastAPI] HTTP 메서드 구현 기본 FastAPI는 HTTP 메서드를 통해 엔드포인트를 정의 - GET, POST, PUT, DELETE, PATCH, OPTIONS ...  HTTP 메서드서버로 들어온 클라이언트의 요청 방식GET : 서버로부터 데이터 조회POST : 서버에 데이터를 전송하여 새로운 데이터를 생성하거나 처리PUT : 기존 리소스 대체DELETE : 리소스 삭제PATCH : 리소스 수정HEAD, OPTIONS 등 여러 메서드들이 추가로 있음 엔드포인트클라이언트의 요청을 처리하고 응답을 반환하는 API의 지점HTTP + URL 로 구성되며 데코레이터로 구현FastAPI에선 대부분의 메서드를 다 지원한다.   FastAPI 예제 코드import loggingfrom fastapi import FastAPI, Formloggin..
[FastAPI] FastAPI 기초 문법 간단한 코드 예제로 FastAPI 기초 분석  다음은 기존 포스팅에 작성한 코드이다.from fastapi import FastAPIfastapi = FastAPI()@fastapi.get("/")async def main(): return {"message": "main"}@fastapi.get("/test")async def test(): return {"message": "test"} 하나씩 해석해보자fastapi = FastAPI() : FastAPI 애플리케이션 생성. 이 인스턴스는 라우팅과 요청 처리, 응답 생성 등의 중싱적인 역할을 한다.라우팅 : 클라이언트의 요청을 서버에 적절한 엔드포인트(함수)로 전달해주는 과정 FastAPI에선 라우트를 함수로 정의한다.경로 함수는 특정 ..
[FastAPI] REST와 CRUD API에 대한 개념과 REST, RESTful의 의미CRUD에 대한 이해 APIApplication Programming Interface. 간단하게 sw간 통신하기 위한 규칙이다.정해진 표준은 없지만 권장사항과 다양한 표준 및 프로토콜이 존재한다.   RESTful APIRepresentational State Transfer이란 간단하게 웹에서 데이터를 전송하는 간단하고 효율적인 아키텍처를 뜻한다.RESTful API는 이젠 거의 기본이된 느낌이다.클라이언트와 서버는 명확하게 분리되어야 한다.각 요청은 독립적이어야 한다.상태가 없어야 한다.응답은 캐싱이 가능해야 한다.주로 HTTP 메서드를 사용한다. GET, POST, PUT, DELETE  CRUD데이터를 관리하는데 필요한 기본적인 4가지 기능으로..
[FastAPI] RESTful API 예시 (feat docs) 간단한 REST API 및 Docs 자동화 간단하게 FastAPI로 REST API를 작성하고 실행해보자# hb.pyfrom fastapi import FastAPIfastapi = FastAPI()@fastapi.get("/")async def main(): return {"message": "main"}@fastapi.get("/test")async def test(): return {"message": "test"} 위와 같이 hb.py 파일을 만들고 가상환경에서 uvicorn hb:fastapi --reload 명령어 입력 시 아래와 같이 실행된다.hb : 실행하는 파이썬 파일명fastapi : 파이썬 파일에 정의된 FastAPI 애플리케이션 인스턴스명즉 hb.py 파일의 fastapi..
[FastAPI] 개발 환경 구성 Python 설치 및 버전가상 환경 설정FastAPI 설치 및 라이브러리 설치 Flask만 사용해 보았는데 FastAPI도 공부하기 위해 가장 기본이되는 개발 환경 설정에 대한 정리파이썬 설치는 간단하니 패스 가상 환경 설정가상 환경같은 경우 여러 프로젝트에 대해 독립된 파이썬 환경을 사용하기 위해 사용한다. 여러 라이브러리를 사용하기 때문에 충돌을 방지해줄 수 있다. 파이썬 명령어와 아나콘다 2가지 방법으로 설정할 수 있다.# 파이썬 명령어로 설정python3 -m venv myenvsource myenv /bin/activatedeactivate# 아나콘다conda create --name myenv python=3.11conda activate myenvconda deactivate  FastAPI..