Programming(186)
-
Fast API - dependencies
dependencies는 Fast API의 @app.get()과 같은 라우트 데코레이터에 포함된 기능으로 특정 경로에 대해 모든 요청에 대해 항상 실행되어야 하는 의존성을 정의하는데 사용한다.이 의미는 간단하게 해당 API에 접근하기전에 dependencies의 의존성들에 의해서 검증하는 것으로 자바의 interceptor의 역할을 한다고 보면 된다. 1. 라우터 메서드의 dependencies dependencies는 라우트 데코레이터에 작성한다.그리고 그 값으로 리스트를 넣어주고이 리스트 내부에 Depends(함수)를 리스트로 넣어서 해당 메서드로 들어오기 이전에 요청이 들어왔을때 해당 함수들에 들어가 문제가 있는 경우 Exception으로 raise해준다. 이제 그 의존성 주입을 할 함수들을 선언해..
15:51:29 -
FastAPI - 의존성 주입
1. Dependency먼저 의존적이다 라는 개념에 대해서 알 필요가 있다.이런 함수들이 있다고 생각해보자. 여기서 함수들은 query, skip, limit라는 매개변수를 입력을 받음에 따라 어떻게 결과값이 달라지고 그 매개변수가 존재하지 않는다면 해당 함수들은 동작하지 않게 된다.그렇기에 메서드 item과 user의 경우는 매개변수인 query, skip, limit에 의존적인 상태라고 할 수 있다. 이렇게 간단한 함수에서 받는 매개변수들은 크게 의존적이다 라는 느낌을 받기가 힘드니까 클래스로 다시 만들어서 확인해보자.이렇게 Car에서 engine을 받기 위해서 Engine()이라는 클래스의 인스턴스를 클래스의 내부에서 생성하게 된다.이러면 Car 클래스는 Engine클래스를 직접 생성하기 때문에 해..
15:23:08 -
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 -
FastAPI - 응답모델
Fast API의 라우트 데코레이터(@app.post("/mian") 이 부분)에는 response_model이라는 것이 있는데 이는 스키마를 고정하고 Swagger UI에 문서화로 설정해서 클라이언트가 응답의 형태를 예측할 수 있도록 해주고, 런타임 시점에 핸들러가 타입을 변경해서 반환을 해도 지정한 모델로 검증 및 변환해서 반환하고 모델에 작성되지 않은 필드는 자동으로 제거 해줌으로써 응답을 원하는대로 제한해서 전달할 수 있게 된다. 1. response_model의 사용우선 모델 하나를 생성해주고이걸 함수의 매개변수로 넣어주자.그리고 라우트 데코레이터에 response_model을 넣어주고 그 값으로 모델 타입을 넣어주면이러면 설정이 끝난다 2. 응답의 제한위의 상태에서 password를 뺀 새로운..
2025.09.01