mingkeJan 22, 2024FastAPI - JWT 인증 구현하기오늘은 며칠전 JWT인증을 만들어 달라는 요청을 받아서 구현했던 내용을 한 번 정리해보려고 합니다. 간단하게 JWT (JSON Web Token)를 설명하면 웹서비스 인증 시스템에 널리 사용되는 컴팩트한 토큰입니다. 헤더, 페이로드, 시그니처 세부분으로 나뉘어져 구성되어 있습니다. FastAPI 공식 문서에 소개된 것을 조금 변형하여 구현해보도록 하겠습니다.FastAPI
mingkeJan 21, 2024python pathlib 파일 경로 다루기 - python 표준 내장 라이브러리오늘은 python에서 파일 경로를 다루는 방법을 알아보려고 합니다. 파이썬을 처음 배울 땐 os.path를 이용해서 다루곤 했는데요. 이젠 python 내장 라이브러리인 pathlib도 많이 사용합니다. pathlib은 파일 시스템 경로를 객체로 취급하며, 경로 관련 작업을 효율적이고 직관적으로 수행할 수 있게 해줍니다.Python
mingkeJan 20, 2024python secrets - python 표준 내장 라이브러리secrets 는 이름에서 알 수 있듯, 보안과 관련해서 난수를 생성하는데 도움을 주는 라이브러리입니다. 3.6 버젼부터 추가되었습니다. “난수 생성은 random 라이브러리 사용하면 되는거 아님?” 이라고 생각할 수 있는데 random은 PNRG(Pseudo-Random Number Generator)를 사용해서 SEED값에 따라 랜덤이지만 순서가 정해집니다. 따라서 SEED값을 알면 순서를 알 수 있기 때문에 안전하지 않습니다Python
mingkeJan 19, 2024SQLAlchemy - 기존 DB로 SQLAlchemy 모델 생성하기(feat.sqlacodegen)새 프로젝트에서 DB를 새로 만들고 migration할 땐 보통 alembic을 사용해서 테이블을 만들고 그것을 기반으로 SQLAlchemy model을 작성합니다. 하지만 DB가 기존에 만들어져 있는 경우는 그렇게 할 수 없죠. 오늘은 sqlacodegen 라이브러리로 기존 DB를 가져와서 SQLAlchemy Model을 생성하는 방법을 알아보려고 합니다.SQLAlchemy
mingkeJan 18, 2024FastAPI - Depends 의존성 주입 그리고 use_cacheFastAPI의 Depends 함수는 의존성 주입(Dependency Injection)을 구현하는 데 사용됩니다. 의존성 주입은 컴포넌트(함수, 클래스 등) 간의 의존성을 외부에서 제공하는 방법입니다.FastAPI
mingkeJan 17, 2024FastAPI - Pydantic 에러 응답 변경 (feat.Exception Handler)FastAPI로 개발하면 pydantic을 통해 입력받은 데이터의 Validation을 하는 경우가 많습니다. pydantic에서 에러가 발생하면 422에러와 함께 pydantic에서 미리 정해놓은 에러 응답이 전송됩니다. 오늘은 이 부분을 내가 원하는대로 응답을 변경하는 방법을 알아보겠습니다.FastAPI
mingkeJan 16, 2024Python 암호화 AES-128-CBC 암호화 구현하기 - pycryptodome과 cryptography 사용하기암호화는 데이터 보안의 중요한 측면 중 하나입니다. 그리고 AES(Advanced Encryption Standard)는 가장 널리 사용되는 대칭 키 암호화 알고리즘 중 하나입니다. 최근 데이터를 암호화 할 일이 있었습니다. 하지만 저는 암호학에 대해 아는게 없습니다. 하지만 Python 라이브러리를 이용하면 쉽게 구현할 수 있습니다Python
mingkeJan 13, 2024Python QRCode 생성하기QRCode를 Python으로 간단하게 만들어봅니다. qrcode 라이브러리를 이용하면 아주 쉽게 만들수 있습니다.Python
mingkeJan 10, 2024SQLAlchemy ORM 속도 측정하기최근 FastAPI + Async SQLAlchemy 조합으로 백엔드 개발을 주로하고 있습니다. 며칠전까지 별 문제 없었는데 어제 API 응답 속도가 좀 느려진 것을 감지했습니다. 원인을 파악하던 도중에 ORM 속도를 측정봐야겠다고 생각했습니다. Async SQLAlchemy ORM의 Query를 실행하는데 걸리는 시간을 측정하는 데코레이터를 만들어보았습니다.PythonSQLAlchemy
mingkeJan 5, 2024Poetry - Python dependency 매니저 알아보기Poetry는 Python 프로젝트 관리의 많은 작업을 간소화하는 아주 강력한 의존성 관리 및 패키징 도구입니다. 최근 poetry를 사용하지 않는 팀원에게 poetry를 사용하는 방법을 알려줬었는데, 블로그에도 글로 한 번 남겨봅니다.Python