Programming(189)
-
Fast API - SQL 데이터베이스
Fast API에서 DB 를 사용하기 위해서 SQLModel을 사용해보도록 하자.먼저 SQL Model의 경우는 SQL Alchemy와 Pydantic을 기반으로 구축되어 있는 모듈이다. 먼저 SQL Model을 설치해보자.그러고 이제 모델을 생성하기 위해 필요한 모듈들을 추가해주고Class로 모델을 생성해주자. 1. Model 생성이때 SQLModel을 상속하면서 table 속성을 True로 설정해주자.그리고 이안에 id, name, age, full_name을 멤버로 만들어주자. 이는 Pydantic 모델을 생성하는 방법과 매우 유사하게 사용된다.(내부적으로는 pydantic모델이긴하다고 함)그 상세를 보면 몇가지 차이점이 있는데 먼저 prymary_key로 설정되어 있는 부분은 해당 멤버가 DB에서..
2025.09.15 -
FastAPI - async with 구문
일반적인 with구문은 파일 열기/닫기 처럼 동기적인 작업을 자동으로 처리해주는 것 처럼, async with는 비동기적인 작업을 시작하고 끝내는 과정을 안전하게 관리해준다. 비동기 프로그래밍에서는 리소스 관리를 위한 특별한 문법으로 일반적인 with 구분이 파일을 핸들링 하기 위해서 혹은 데이터베이스 커넥션을 위해서 동기적인 리소스를 안전하게 열고 닫는 역할을 하듯이 async with는 await이 필요한 비동기적인 리소스를 안전하게 관리해준다. async with 구분은 내부적으로 __aenther__와 __aexit__을 호출한다 __aenther____aenther__는 async with 블록이 시작될때 호출된다.리소스를 설정하고 필요하다면 await을 사용해서 비동기적으로 준비한다 __aex..
2025.09.10 -
Fast API - Middleware
1. Middleware미들웨어는 FastAPI 애플리케이션의 모든 요청과 응답 사이에서 실행되는 함수로 웹 서버에 들어오는 요청을 가로채서 처리를 한 후에 다음 단계로 전달하거나 응답을 수정하는 역할을 한다. 미들웨어는 여러 API 엔드포인트에서 공통적으로 적용해야하는 로직을 한 곳 에서 처리가 가는하다는 점에서 유용하다.미들웨어가 없다면 모든 라우트 함수에 동일한 코드를 복,붙해서 써야하기에 코드가 중복되고 관리가 어려워진다. 보통 미들웨어에서는 인증 및 권한 부여(요청 헤더 토큰 검사를 통한 로그인 여부 확인, 접근 권한 확인), 로깅(모든 요청에 대한 IP, 요청시간, 응답 상태 코드 등을 기록), CORS(다른 도메인에서 오는 요청을 허용하거나 차단하는 규칙을 설정), 압축(클라이언트에게 보내는..
2025.09.10 -
Fast API - dependencies
dependencies는 Fast API의 @app.get()과 같은 라우트 데코레이터에 포함된 기능으로 특정 경로에 대해 모든 요청에 대해 항상 실행되어야 하는 의존성을 정의하는데 사용한다.이 의미는 간단하게 해당 API에 접근하기전에 dependencies의 의존성들에 의해서 검증하는 것으로 자바의 interceptor의 역할을 한다고 보면 된다. 1. 라우터 메서드의 dependencies dependencies는 라우트 데코레이터에 작성한다.그리고 그 값으로 리스트를 넣어주고이 리스트 내부에 Depends(함수)를 리스트로 넣어서 해당 메서드로 들어오기 이전에 요청이 들어왔을때 해당 함수들에 들어가 문제가 있는 경우 Exception으로 raise해준다. 이제 그 의존성 주입을 할 함수들을 선언해..
2025.09.03 -
FastAPI - 의존성 주입
1. Dependency먼저 의존적이다 라는 개념에 대해서 알 필요가 있다.이런 함수들이 있다고 생각해보자. 여기서 함수들은 query, skip, limit라는 매개변수를 입력을 받음에 따라 어떻게 결과값이 달라지고 그 매개변수가 존재하지 않는다면 해당 함수들은 동작하지 않게 된다.그렇기에 메서드 item과 user의 경우는 매개변수인 query, skip, limit에 의존적인 상태라고 할 수 있다. 이렇게 간단한 함수에서 받는 매개변수들은 크게 의존적이다 라는 느낌을 받기가 힘드니까 클래스로 다시 만들어서 확인해보자.이렇게 Car에서 engine을 받기 위해서 Engine()이라는 클래스의 인스턴스를 클래스의 내부에서 생성하게 된다.이러면 Car 클래스는 Engine클래스를 직접 생성하기 때문에 해..
2025.09.03 -
Fast API - 라우팅 데코레이터의 속성
라우팅 데코레이터에는 기존에 라우팅을 하는 문자열 뿐만 아니라 여러가지의 속성이 들어가 추가적인 기능을 할 수 있게 설정할 수 있다.이 속성들에 대해서 간단하게 필요한것들만 알아보자. 1. tags라우팅 데코레이터 중 tags라는 속성은 문서에서 엔드 포인트들을 직접설정해서 하나의 그룹으로 묶기 위한 속성이다.이는 실제 프로그램의 실행에는 전혀 관계 없이 OpenAPI/Swagger UI 문서에 해당 메서드 들을 그룹으로 묶기 위함이다. 이렇게 메서드가 선언되어 있을때 문서에는이런식으로 모든 메서드가 구분없이 단일로 출력되게 되어 있다. 여기서 라우팅 데코레이터에 tags로 str로 된 단일 배열로 user에 대한건 "user"로 admin에 대한건 "admin"으로 설정해주면이렇게 해당 메서드가 어떤 ..
2025.09.02