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

Fastapi 19

[FastAPI] 미들웨어(Middleware) (11)

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

Fastapi 2025.01.04

[FastAPI] 예외(Exception) 처리 방법 (10)

1. 개요FastAPI에서 예외를 처리하는 대표적인 방법은 아래와 같다.HTTPException 사용Custom Exception 만들기예외처리 핸들러 등록하기2.   HTTPException 사용FastAPI에서 기본적으로 제공하는 예외 클래스간단히 사용할 때 사용.from fastapi import FastAPI, HTTPExceptionapp = FastAPI()@app.get("/items/{item_id}")async def read_item(item_id: int): if item_id  3.  Custom 예외3.1. 왜 사용하는가?예외를 좀더 쉽게 추적하고 디버깅 하기위해코드의 가독성, 유지보수를 위해상태 코드와 메시지로만 예외를 구분하면 코드가 길어지고 복잡복잡한 시스템을 만들 때 ..

Fastapi 2025.01.04

[FastAPI] API의 Output (9)

1. API의 OutputAPI의 Output에는 어떠한 내용이 담겨있을까?데이터의 결과와 상태에 대한 데이터가 담겨 있다.구체적으로는 아래와 같다.Pydantic (Response Model)FastAPI는 Pydantic 모델을 사용하여 응답 데이터 구조를 정의클라이언트가 받을 데이터의 형태를 명확히 규정하고, 필요에 따라 필드 제한(예: 특정 필드만 출력)Json 데이터FastAPI는 기본적으로 JSON 포맷으로 응답을 반환한다.HTTP 상태 코드응답 상태 코드는 요청이 성공했는지, 실패했는지, 그리고 실패 이유가 무엇인지 클라이언트에 알려줌결론적으로 Json 형태로 만들거나, Pydantic 형태로 만들고데이터와 상태코드를 담아 보내면 된다. 2. 상태 코드2.1. 상태 코드 종류1xx: Info..

Fastapi 2025.01.04

[FastAPI] API의 Input (8)

지금까지는, API를 만들 때 그때그때 필요한 값을 Input으로 만들었다.앞으로는 상황에 맞는 값들을 사용해 보자.1. Path parameter1.1.설명경로(Path)에 파라미터 지정하는 방법Path Parameters는 클라이언트가 서버로 데이터를 전달하는 방법 중 하나일반적으로 str, int 를 처리한다.리소스 식별에 적합, (특정 리소스(데이터)를 고유하게 식별해야 하는 경우)get, delete 에서 주로 사용1.2. 기본 사용법URL에서 중괄호 {} 안에 정의함수의 파라미터에 input값, 타입힌트 정의주의사항{} 안의 변수명과 함수 매개변수명이 일치기본값을 설정할 수 없음@app.get("/users/{user_id}")async def read_user(user_id: int): ..

Fastapi 2025.01.02

[FastAPI] JWT 기반 인증 (7)

1. 인증(Authentication) 이란인증(Authentication)은 시스템이나 서비스가 사용자가 누구인지 확인하는 과정을 의미합니다. 즉, 사용자가 주장하는 신원이 실제로 그 사람인지 확인하는 절차입니다. FastAPI에서는 두 가지 인증 방식을 모두 지원할 수 있습니다.세션 기반 인증은 Depends와 같은 의존성 주입을 통해 쉽게 구현할 수 있으며, 쿠키 기반의 세션 관리를 사용합니다.토큰 기반 인증은 OAuth2PasswordBearer와 같은 인증 스키마를 사용해 JWT 기반 인증을 구현하는 것이 일반적입니다.그 중에서 이번 시간에는 토큰 기반 인증인 JWT(Json Web Token)에 대해 공부해 봅시다.2. JWT 2.1. JWT 란?JWT는 주로 인증 목적으로 사용되며, 토큰 안..

Fastapi 2025.01.01

[FastAPI] SQLAlchemy 상세 - Delete (6-4)

1. SQL 방식delete 함수 사용from sqlalchemy import deletestmt = delete(User).where(User.id == 1)await db.execute(stmt)await db.commit() 2. ORM 방식ORM을 사용하는 경우, 먼저 객체를 조회한 후 삭제stmt = select(User).where(User.id == 1)result = await db.execute(stmt)user = result.scalars().first()if user: await db.delete(user) await db.commit() 3. ORM 관계 삭제ORM 관계에서 하위 테이블의 데이터 삭제는 Cascading을 설정하여 자동으로 처리 가능class User(B..

Fastapi 2025.01.01

[FastAPI] SQLAlchemy 상세 - Update(6-3)

update는 조건에 따라 값을 변경해주는 것이기 때문에, 복잡한 개념이 필요가 없어서 편하다. 여기서도 마찬가지로, SQL 방식과 ORM 방식으로 나눠서 공부해보자 1. SQL 방식1.1. 기본 사용 방법update() 함수를 사용where() 함수로 필터링values() 함수에 변경할 값을 입력from sqlalchemy import updatestmt = ( update(User) .where(User.id == 1) .values(name="New Name", email="new_email@example.com"))await db.execute(stmt)await db.commit() Json 데이터 이용 하기stmt = ( update(User) .where(User...

Fastapi 2025.01.01

[FastAPI] SQLAlchemy 상세 - Read/Select (6-2)

select 방식에서는 굳이 복잡하게 SQL 방식을 사용할 필요는 없다.대신, 이번 페이지에서는 select의 다양한 기능에 대해 알아보자1. 기본 사용 방법기본적인 실행 순서는 아래와 같다.쿼리 생성: select() 함수 이용조건 추가 : .where() 를 사용해 필터 조건 추가쿼리 실행 : db.execute() 로 쿼리를 실행결과 처리아래는 result = db.execute() 코드 실행 이후에 결과처리를 위한 메서드 이다.메서드반환값설명.fetchall()행의 리스트(list of Row objects)결과의 모든 행을 반환,메모리 효율성이 중요하거나 단순 데이터 추출에 적합.fetchone()첫 번째 행(Row object)결과의 첫 번째 행(row)만 반환.scalar()첫 번째 컬럼 값..

Fastapi 2025.01.01

[FastAPI] SQLAlchemy 상세 - Create/Insert (6-1)

현재 글에서는 SQLAlchemy 2.0 기준으로 글을 작성하겠다. CRUD는 크게 두가지 방법이 있다.ORM 방식객체 중심적으로 작업해야 하는 경우데이터베이스와 python 객체의 상태 동기화가 필요한 경우SQL 방식대량의 데이터를 처리하거나 성능이 중요한 경우ORM이 필요 없는 아주 간단한 작업두가지 방법을 비교하며 작성하겠다. 이번 시간에는 Insert 에 대해 공부해 보자. 1. ORM 방식1.1. ORM 기본 방법사용 함수: db.add()단점: 대량 데이터 삽입에는 비효율적일 수 있음(대량 작업에서는 SQL 방식 추천).from sqlalchemy.ext.asyncio import AsyncSessionfrom models import User # ORM 모델from database impo..

Fastapi 2024.12.31

[FastAPI] Sqlalchemy와 CRUD (6)

1. SQLAlchemy1.1.SQLAlchemy란?SQLAlchemy는 Python의 ORM(객체 관계 매핑) 라이브러리로, 데이터베이스와 Python 객체 간의 변환을 쉽게 할 수 있게 도와줍니다. ORM(객체 관계 매핑, Object-Relational Mapping)은 프로그래밍 언어의 객체지향적 패러다임과 관계형 데이터베이스의 테이블 간의 데이터를 변환하는 기술입니다. 쉽게 말해, ORM은 데이터베이스의 테이블과 프로그래밍 언어에서 사용하는 객체를 매핑하여 데이터베이스 작업을 코드 내에서 객체를 다루는 것처럼 편리하게 수행할 수 있도록 해줍니다. 1.2. 데이터베이스별 비교이번 글에서는 Postgresql을 기준으로 글을 작성하겠습니다. SQLAlchemy를 사용할 때, 사용하는 데이터베이스가 ..

Fastapi 2024.12.31
반응형