전체 글(187)
-
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 - 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 -
FastAPI - Exception
API는 성공에 대해서 뿐만 아니라 실패에 대해서도 알려줘야만 한다.이를 위해서 보통의 언어들에서는 모두 Exception에 대한 처리가 필요하다 이걸 FastAPI 프레임 워크에서는 어떻게 처리하는지에 대해서 한번 알아보자. 1. Exception먼저 FastAPI에서는 이 Exception을 처리하기 위해서 HTTPException이라는 모듈을 제공한다.먼저 HTTPException을 import 하고 함수를 하나 만들고 파라미터 id를 하나 받아보자.여기서 이 함수에서 id라는 값이 무조건 필요하다면 혹은 id가 0일 경우는 에러라고 알리고 싶다면 이에 대한 분기조건을 하나 만들어준다.여기서 raise를 통해서 HTTPException을 불러주고 이제 이 HTTPException 내부에 status..
2025.09.02 -
FastAPI - Form Data 받기
jsp를 쓰는 경우는 Form Data를 받는 형태로 구성해서 사용자의 데이터를 받아 저장하는 형태로 패턴을 형성하고 있다.거기서 Spring을 쓰는 경우는 대부분 위와 같은 방식으로 처리하는 걸로 기억하는데 FastAPI에서도 application/x-www-form-urlencoded 혹은 multipart/form-data로 오는 요청을 받을때 이를 처리하기 위한 Form()이 존재한다 1. Form()의 사용먼저 Form은 fastapi 내부에 존재하며 요청을 받았을때 어디서 값을 읽어야할지 지정해줘야하기 때문에 typing에서 Annotated를 추가해줘야 한다.그리고 로그인 정보를 form으로 받아서 이를 사용하는 메서드를 하나 만들어보자면 일단이렇게 선언하고 그리고 사용자의 정보를 매개변수에..
2025.09.01