인공지능 개발자 수다(유튜브 바로가기) 자세히보기
반응형

Fastapi 32

[FastAPI] 객체지향과 FastAPI (16)

FastAPI에서 객체지향 개념을 적용해 보자. 1. FastAPI에서 객체지향 적용의 필요성캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)코드가 커지다 보면, 비슷한 기능을 하는 클래스를 여러개 만들 때가 많다. 이럴때 추상클래스와 상속, 다형성 개념을 적용하면 코드를 깔끔하게 정리할 수 있다.예를 들어 삭제 동작을 정의한다고 할 때, 프로젝트의 다양한 곳에서 delete, remove, erase, eliminate 등 다양한 이름으로 사용된다면 상당히 관리가 어려울 것이기 때문이다. 이럴 때, 추상클래스를 상속해 사용한다면 코드 관리가 아주 편리해 질 수 있을 것이다. 의존성 주입을 통한 결합도 낮추기fastapi의 Depends를 활용한 객체 주입..

Fastapi 2025.02.25

[FastAPI] FastAPI 속도개선 - 캐시(Cache) (15)

1. 캐시(Cache)란캐시(Cache)는 자주 사용되는 데이터를 빠르게 접근할 수 있도록 저장해 두는 임시 저장소즉, 속도를 높이고 성능을 최적화하기 위해 데이터를 미리 저장하는 기술 동작 방식사용자가 특정 데이터 요청 → 서버에서 데이터 조회 → 캐시에 저장다음에 동일한 요청이 오면, 데이터베이스 대신 캐시에서 데이터를 반환일정 시간이 지나면 캐시 만료(Expire) → 새로운 데이터를 다시 저장 사용 이유속도 향상서버 부하 감소비용 절감 주의사항오래된 데이터(Invalidation 문제) : 최신화된 데이터가 불러와지지 않을 수 있음메모리 사용량 증가 : 캐시가 많아질수록 메모리를 많이 차지하므로 적절한 용량 관리가 필요. 2. FastAPI 사용 방법2.1. 설치먼저 아래 명령어로 라이브러리를 설..

Fastapi 2025.02.04

[FastAPI] pytest 사용법 (14)

1. pytest 사용법1.1. 실행 방법pytest는 함수 이름이 test_로 시작하는 함수를 찾아서 실행함수 정의 시, assert 키워드를 이용해 성공 여부를 검사. True인 경우 성공 pytest 예시코드def test_addition(): assert 1 + 2 == 3def test_string_upper(): assert "pytest".upper() == "PYTEST"def test_fail(): assert 1 + 1 == 3, "이 테스트는 실패해야 합니다!" 특정 파일 테스트 실행pytest 파이썬파일.pypytest test_sample.py 특정 디렉토리 안의 모든 테스트 실행pytest pytest tests/test_routers/ 특정 함수만 테스트 실행p..

Fastapi 2025.02.03

[FastAPI] 로그 남기기 (logging) (13)

1. 기본 logging 설정 utils/logging.pyPython의 logging 모듈을 사용해서 FastAPI에 로깅을 추가logging.basicConfig() : 기본 로깅 설정 logging.StreamHandler() : 터미널에 출력하는 핸들러logging.FileHandler(file_path, mode="a") : 로그 파일에 저장logger = logging.getLogger("로거 이름") : logger 정의, 로거를 여러개 만든다면, 로거 이름을 각각 사용해 구분할 수 있다.import loggingimport os# 로그 파일 경로 설정LOG_FILE_PATH = "logs/app.log"os.makedirs(os.path.dirname(LOG_FILE_PATH), exist..

Fastapi 2025.02.03

[FastAPI] 공통 코드(Common Code) 작성 방법 (12)

1. 공통 코드(Common Code)란?공통 코드는 반복되는 로직을 모듈화하여 여러 곳에서 재사용할 수 있도록 구성하는 것 ✅ 장점코드 중복 감소 → 동일한 로직을 여러 곳에서 사용 가능가독성 향상 → 핵심 로직만 남아 코드가 깔끔해짐유지보수 용이 → 하나의 파일에서 수정하면 모든 곳에 적용됨테스트 용이 → 공통 모듈을 독립적으로 테스트 가능 2. 공통 코드 작성 방법공통 코드 디렉토리 구조보통 utils/ 디렉터리에 작성하며, 프로젝트 전반에서 사용my_fastapi_project/│── main.py│── routers/│── services/│── repositories/│── models/│── schemas/│── database.py│── utils/ # ✅ 공통 코드 디렉터리│ ├──..

Fastapi 2025.02.02

[FastAPI] 디자인 패턴-스키마 패턴(11-7)

1. 스키마 패턴(Schema Pattern)이란?FastAPI에서 Pydantic을 사용하여 API 요청과 응답 데이터를 구조화하는 방법을 의미데이터 유효성을 보장하면서, API 응답 구조를 일관되게 유지데이터 유효성 검사 (Validation)입력(Input)과 출력(Output) 데이터 분리 (UserCreate, UserResponse 처럼 서로 다른 구조 정의 가능)API 문서 자동 생성 지원ORM과 분리된 구조 유지 2. 사용 방법프로젝트 구조 예시✅ Pydantic 스키마는 schemas/ 폴더에서 관리하여 API 요청과 응답 데이터를 처리my_fastapi_project/│── main.py│── routers/│ ├── user.py│── services/│ ├── user_ser..

Fastapi 2025.02.02

[FastAPI] 디자인 패턴-레포지토리 패턴(11-6)

1. 레포지토리 패턴(Repository Pattern)이란?레포지토리 패턴(Repository Pattern)은 데이터베이스(DB) 액세스를 서비스 로직(Service Layer)에서 분리하는 패턴즉, 데이터베이스와 직접 상호작용하는 코드(쿼리)를 레포지토리 파일에 따로 관리서비스 레이어는 이 레포지토리를 호출하여 데이터를 가져오는 방식장점데이터베이스 종속성 제거 → 서비스 레이어에서 직접 DB 모델을 다루지 않아, DB 변경 시 최소한의 코드 수정재사용성 증가 → 동일한 DB 조회/저장 로직을 여러 서비스에서 재사용 가능테스트가 쉬워짐 → 가짜(faker) DB를 사용해 테스트 가능 (예: SQLite, Mock DB)코드 가독성 향상 → SQLAlchemy 관련 로직이 분리되어 서비스 코드가 더 깔..

Fastapi 2025.02.02

[FastAPI] 디자인 패턴-서비스 레이어 패턴(11-5)

1. 서비스 레이어 패턴 (Service Layer Pattern) 이란서비스 레이어 패턴(Service Layer Pattern)은 비즈니스 로직을 엔드포인트(FastAPI 라우터)와 데이터 액세스(Repository) 레이어로부터 분리하는 아키텍처 패턴 FastAPI에서라우터는 요청을 받고,서비스 레이어는 핵심 로직을 수행하며,리포지토리는 데이터베이스와 직접 상호작용 장점비즈니스 로직과 API 엔드포인트 분리 → 코드가 깔끔재사용성 증가 → 같은 로직을 여러 엔드포인트에서 사용 가능유지보수 용이 → 데이터베이스 변경 시 API 코드 변경 없이 서비스 레이어에서만 수정유닛 테스트 용이 → 데이터베이스 없이 서비스 레이어 단독으로 테스트 가능 2. 서비스 레이어 패턴 사용 방법프로젝트 구조 예시각 역할을..

Fastapi 2025.02.02

[FastAPI] 디자인 패턴-라우터패턴(Router Pattern) (11-4)

1. 라우터 패턴 (Router Pattern) 이란라우터 패턴(Router Pattern)은 FastAPI에서 API 엔드포인트를 논리적으로 분리하여 관리하는 방법기본적으로 APIRouter를 사용하여 엔드포인트를 모듈화하고, app 객체를 만드는 부분에서 이를 포함시키는 방식. 장점코드 모듈화: 엔드포인트를 역할별로 나가독성 향상: 각 엔드포인트의 역할이 명확유지보수 용이: 특정 기능을 수정하거나 추가할 때 더 쉽게 변경 가능확장성: 새로운 API 기능을 추가할 때 기존 구조를 해치지 않고 추가 가능 2. 라우터 패턴 사용 방법프로젝트 구조 예시my_fastapi_project/│── main.py│── routers/│ ├── user.py│ ├── item.py│── models/│── ..

Fastapi 2025.02.02

[FastAPI] 디자인 패턴-미들웨어 패턴(Middleware Pattern) (11-3)

1. 미들웨어(Middleware) 란 무엇인가개념클라이언트와 서버 사이에서 데이터 요청(Request) 및 응답(Response)을 처리하는 중간 계층HTTP 요청을 처리하거나 응답을 반환하기 전에 실행되는 함수case1 : 요청이 애플리케이션의 특정 라우터에 도달하기 전에 작업을 수행case2 : 응답이 클라이언트에 반환되기 전에 조작하는 데 사용주요 역할요청(Request) 처리 전 작업요청의 유효성을 검사하거나 수정인증(Authentication) 및 권한 확인(Authorization)로그 기록(Log)을 남기거나 성능 모니터링응답(Response) 처리 후 작업데이터 압축(Gzip 등)응답 헤더 추가에러나 예외(Exception)를 클라이언트에 적절히 전달보안(Security)CORS(Cros..

Fastapi 2025.01.27
반응형