FastAPI에서 JWT 토큰을 이용한 로그인 인증 구현
·
Python
FastAPI에서 JWT 토큰을 이용한 로그인 인증 구현1. JWT란?JWT(Json Web Token)는 서버가 사용자 인증을 위해 발급하는 토큰으로, 사용자 정보를 암호화하여 클라이언트에 전달하는 방식입니다.클라이언트는 이 토큰을 Authorization: Bearer 형태로 서버에 전달하고, 서버는 토큰을 검증하여 인증 여부를 판단합니다.JWT는 다음의 3부분으로 구성됩니다.Header: 알고리즘, 토큰 타입Payload: 사용자 정보 및 만료 시간 등 클레임Signature: 헤더 + 페이로드를 비밀키로 암호화한 서명Claim 종류iat: 발급 시간exp: 만료 시간sub: 사용자 ID 등 식별 정보헤더: 토큰 타입(typ)과 암호화 방법(alg)을 보관하는 곳으로 BASE64로 인코딩페이로드:..
FastAPI + React로 회원관리 시스템 구축 (MySQL 연동)
·
Python
FastAPI + React로 회원관리 시스템 구축 (MySQL 연동)MySQL 설치아래 링크를 참고하여 MySQL과 Workbench를 설치합니다. https://myanjini.tistory.com/entry/MySQL-8034-MySQL-Workbench-80-설치 스키마 생성MySQL Workbench에서 fastapiuser 사용자로 접속한 상태에서 아래 쿼리를 실행합니다.CREATE SCHEMA `fastapidb` DEFAULT CHARACTER SET utf8;실행이 완료되면 왼쪽 SCHEMAS 목록에서 fastapidb가 생성된 것을 확인할 수 있습니다.MySQL 연동 설정 (database/connection.py)# 데이터베이스 설정from sqlmodel import SQLModel..
React와 Python 연결
·
Python
React와 Python 연결React로 작성한 프론트엔드와 FastAPI로 구성한 백엔드를 연결하여 데이터를 주고받는 구조는 실제 서비스 개발에서 가장 기본적이면서도 중요한 흐름입니다.이번 글에서는 React에서 입력한 데이터를 FastAPI로 전송하는 과정을 실습하고, 중간에 발생했던 CORS 에러 문제와 해결 방법까지 정리합니다.프론트엔드: React 입력 폼 작성사용자가 이벤트 정보를 입력하면 해당 데이터를 FastAPI 서버로 전송하도록, 다음과 같은 컴포넌트를 작성했습니다.// src/event/Regist.jsximport { useState } from "react";import axios from "axios";function Regist() { const [form, setForm] ..
FastAPI-DB연결
·
Python
FastAPI + SQLModel 기반 SQLite 데이터베이스 설정데이터베이스 설정FastAPI에서 SQLite를 기반으로 SQLModel을 사용한 데이터베이스 설정 방법을 정리한다. planner.db 파일이 프로젝트 루트에 생성되며, 앱 실행 시 자동으로 테이블이 생성되고 DB 세션이 관리된다.# database/connection.pyfrom sqlmodel import SQLModel, create_engine, Session# SQLite 데이터베이스 파일 경로 지정database_file = "planner.db"database_connection_string = f"sqlite:///{database_file}"connect_args = {"check_same_thread": False}#..
FastAPI-CRUD
·
Python
FastAPI 이벤트 CRUD 예제# routes/events.pyfrom typing import Listfrom fastapi import APIRouter, Body, HTTPException, Path, statusfrom models.events import Event, UpdateEventevent_router = APIRouter(tags=["Event"])events = []# 이벤트 전체 조회 /events/@event_router.get("/", response_model=List[Event])async def retrive_all_events() -> List[Event]: return events# 이벤트 상세 조회 /events/{event_id}@event_router...
Path, Query, Response_model
·
Python
HTTP 통신 오류코드 - 404경로 자체가 없음HTTP 통신 오류코드 - 422요청 자체에는 오류 없음서버가 요청 내용 처리 불가FastAPI에서 주로 경로 변수 타입 불일치 시 발생(Path, Query)PathURL 경로 변수에 제약 조건 부여예: /todos/1 → id는 양수여야 함Path 매개변수 옵션... : 필수 매개변수 (생략 불가)title : Swagger UI 문서에 제목 표시ge=1 : 최소값 제한 (1 이상)le=100 : 최대값 제한gt, lt : 초과/미만 제한FastAPI 라우팅 순서고정 경로는 먼저 정의경로 매개변수는 나중에 정의예: /users/me → /users/{user_id} 순으로 작성경로 매개변수는 위치 기반, 쿼리 매개변수는 키-값 기반정확한 매칭 우선 적용..