mingkeAug 14, 2024FastAPI Swagger 접근 제한하기최근에 Swagger 관련 이야기를 하다가 Swagger에 접근하는 방법에 대한 이야기가 나왔습니다. 프로젝트를 하면서 API를 만들었는데 Swagger에 같은 팀원만 접근할 수 있도록 만들 필요가 있었습니다.FastAPISwagger
mingkeJun 9, 2024FastAPI lifespan asynccontextmanager 직접 구현하기 (feat.__aenter__, __aexit__)FastAPI에서 startup 이벤트와 shutdown를 구현하는 방법으로 lifespan을 사용하는 방법이 있습니다. 이번 포스팅에서 좀 더 객체지향적이고 사용성 좋은 방법으로 구현해보았습니다.FastAPIPython
mingkeMay 28, 2024FastAPI에서 Scheduler 사용하기백엔드 개발하다보면 Scheduler를 개발해야할 때가 종종 있습니다. FastAPI를 사용할 때 복잡하지 않은 Scheduler라면 apscheduler 라는 라이브러리를 사용하면 됩니다.간단하게 알아보도록 하겠습니다.FastAPIPython
mingkeMay 27, 2024FastAPI - API 파라미터 camelCase로 변경하기 (feat. Pydantic Field)API 명세에서 CamelCase를 사용하고 백엔드 코드베이스에서는 snake_case를 유지하는 방법을 알아보도록 하겠습니다.FastAPIPydantic
mingkeMay 13, 2024FastAPI - Supabase Storage 사용해보기지난번 포스팅에서 FastAPI와 Supabase DB를 사용해보았습니다. 이번 포스팅에서는 Supabase에서 제공하는 Storage 서비스를 사용해보겠습니다. AWS S3와 동일하지만 1GB까지 무료로 사용할 수 있습니다. Supabase에서 제공하는 Python SDK를 사용하면 아주 쉽게 사용할 수 있습니다.FastAPISupabase
mingkeMay 11, 2024FastAPI - Supabase DB 사용해서 개발해보기Supabase는 PostgreSQL을 기반으로 한 오픈 소스의 Backend-as-a-Service(BaaS) 플랫폼으로, Firebase에 대한 오픈 소스 대안으로 알려져 있습니다. 이번 포스팅에서 Supabase에서 제공하는 DB와 Storage를 FastAPI와 함께 사용하는 방법에 대해서 간단하게 알아보겠습니다.FastAPISupabase
mingkeMay 9, 2024FastAPI 이미지 S3 업로드 (클라우드 스토리지)지난번 포스팅에서 FastAPI 이미지 업로드 기능에 대해서 다뤘습니다. 단순히 업로드 받아서 서버의 파일시스템에 저장하는 방식으로 했었는데요. 이번 포스팅에서는 대표적인 클라우드 스토리지인 S3에 저장하는 방법을 다뤄보도록 하겠습니다.AWSFastAPI
mingkeMay 7, 2024FastAPI 이미지 업로드 (feat. 이미지 최적화)오늘은 FastAPI에서 이미지를 업로드하는 하는 방법을 주제로 포스팅을 해볼까합니다. 최근 있었던 작업중에 클라이언트에서 업로드한 이미지를 받아서 클라우드 스토리지에 저장하는 것이 있었는데요. FastAPI로 작업했던 것은 아니었습니다. 그래서 FastAPI로도 하는 방법을 정리해보겠습니다.FastAPI
mingkeMay 3, 2024FastAPI CLI 업데이트 version - 0.111.0오늘보니 FastAPI의 CLI 기능이 업데이트 되었더라구요. FastAPI에 CLI가 없어서 좀 아쉽다는 생각이 있었는데 0.111.0 버젼에서 추가되었습니다.FastAPI
mingkeMay 1, 2024FastAPI Swagger 수정하기FastAPI의 장점중의 하나는 자동으로 Swagger를 생성해준다는 것입니다. 기본 세팅이 되어 생성이 됩니다. 물론 개발자가 직접 수정할 수도 있습니다. 사용하다보면 수정해보고 싶은 마음이 생길 수도 있는데요. html, css를 직접 수정해서 UI를 변경할 수도 있는데 저는 html,css를 잘하는 편이 아니기 때문에, 간단하게 변경할 수 있는 방법을 이번 포스팅에서 다뤄보겠습니다.FastAPISwagger
mingkeApr 30, 2024FastAPI Middleware 적용 방법이번 포스팅에서는 FastAPI에서 Middleware를 적용하는 방법들에 대해서 알아보겠습니다. 방법이 한가지가 아닙니다. 어려운 방법은 없으니 하나씩 알아보도록 하겠습니다.FastAPI
mingkeApr 24, 2024FastAPI - JWT 로그인 쿠키 사용오늘 다뤄볼 내용은 쿠키를 사용해서 JWT 로그인을 구현해보는 것입니다. 지난번 포스팅에서는 JWT 인증을 구현해서 Response Body에 토큰을 담는 방식으로 진행했습니다.FastAPI
mingkeApr 15, 2024FastAPI - Websockets 사용해보기 (with Redis)예전에 했던 사이드 프로젝트 중에서 WebSocket을 사용했던 적이 있습니다. FastAPI를 이용해서 websocket을 구현했었는데요. 아주 쉽게 구현이 가능해서 금새 만들었습니다. 그 방법을 이번 포스팅에서 공유해보려고 합니다.FastAPI
mingkeApr 9, 2024FastAPI 파일 다운로드 구현하기특정 데이터들을 Excel로 다운로드 하거나, 이미지들을 다운로드 하는 등의 요청이 있었습니다. 이와 관련해서 FastAPI에서 파일 다운로드 방법을 이번 포스팅에 공유하고자 합니다.FastAPI
mingkeApr 2, 2024Redis 따닥 방지(중복 방지) 하기 - FastAPI최근 면접에서 받았던 질문 내용을 가지고 블로그 글을 작성하고 있습니다. 이번에는 Redis를 이용해서 클라이언트의 따닥을 방지하는 방법을 알아보겠습니다. 성공하든 실패하든 면접 많이 보는것은 도움이 되는 것 같네요. 임시 Token과 Redis를 이용해서 상태관리를 통해 처리할 수 있습니다.RedisFastAPI
mingkeMar 12, 2024FastAPI Settings - Pydantic Settings 관리하기FastAPI에서는 Django 처럼 기본 Setting을 지원해주는 것이 없기 때문에 프로젝트에 필요한 셋팅들을 직접 만들어줘야 합니다. DB 주소, AWS키 등 프로젝트에서 사용될 환경변수나 상수값 같은 것들을 말이죠. pydantic_settings를 많이 사용합니다. 이번 포스팅에서 pydantic_settings로 FastAPI에서 setting을 관리하는 방법을 알아보겠습니다.FastAPIPydantic
mingkeFeb 26, 2024FastAPI AWS ECS에 배포하기FastAPI 애플리케이션을 배포하기 위해 gunicorn을 설정하고 실행하는 방법을 알아봤습니다. 배포를 위한 여러가지 방법들이 있지만 오늘 공유할 내용은 AWS ECS + EC2 입니다.FastAPIGunicornAWS
mingkeFeb 17, 2024FastAPI 배포하기 gunicornAI의 인기와 함께 요즘 FastAPI를 배우려고 하는 분들이 많이 늘어난 것 같습니다. 개발이 빠르고, 쉽게 ML모델을 서빙해볼 수 있는 도구로 FastAPI가 주목받고 있어서 그런것 같습니다. 친구에게도 FastAPI 애플리케이션 배포 어떻게 하냐는 질문을 받은 적도 있어서, FastAPI + Gunicorn 배포 방법을 포스팅해보려고 합니다.FastAPI
mingkeFeb 7, 2024FastAPI CORS 특정 도메인 전체 포트 허용하기FastAPI에서는 CORSMiddleware를 사용하여 이러한 CORS 설정을 쉽게 구현할 수 있습니다. CORS에서 도메인을 입력할 때 도메인이 같아도 포트번호가 다르면 다른 출처가 됩니다. 최근 프론트엔드 개발자가 CORS 에서 특정 도메인에 포트를 여러개 허용해달라는 요청이 있었습니다.FastAPI
mingkeFeb 1, 2024FastAPI Streaming 하는 법 StreamingResponseFastAPI에서 StreamingResponse을 이용해서 Streaming 방식으로 클라이언트에 데이터를 전달하는 방법을 알아보겠습니다.FastAPI
mingkeJan 29, 2024FastAPI - Pydantic 으로 Query param 만들기Query Parameter에 대해서 Query parameter가 많아서 함수의 parameter 값으로 넣으면 코드가 지저분해지고 보기 힘들어지거나, Query Parameter를 따로 관리하고 싶거나 할 때 Pydantic BaseModel을 사용해서 Query Parameter를 정의해서 사용하면 편리합니다.FastAPI
mingkeJan 24, 2024Github Actions에서 TEST DB 사용하기테스트코드를 작성하면서 DB가 필요한 경우가 있습니다. 로컬에서 테스트를 실행할 때는 docker-compose로 테스트 DB 컨테이너를 하나 새로 띄워서 사용했습니다. 하지만 CI/CD 구축을 할 때는 굳이 docker compose를 사용하지는 않았습니다. DB를 쉽게 띄울 수 있기에 그렇게 했습니다. Gitbhub Actions에서 TEST DB 사용하는 방법을 알아보겠습니다.FastAPIGithub Actions
mingkeJan 22, 2024FastAPI - JWT 인증 구현하기오늘은 며칠전 JWT인증을 만들어 달라는 요청을 받아서 구현했던 내용을 한 번 정리해보려고 합니다. 간단하게 JWT (JSON Web Token)를 설명하면 웹서비스 인증 시스템에 널리 사용되는 컴팩트한 토큰입니다. 헤더, 페이로드, 시그니처 세부분으로 나뉘어져 구성되어 있습니다. FastAPI 공식 문서에 소개된 것을 조금 변형하여 구현해보도록 하겠습니다.FastAPI
mingkeJan 18, 2024FastAPI - Depends 의존성 주입 그리고 use_cacheFastAPI의 Depends 함수는 의존성 주입(Dependency Injection)을 구현하는 데 사용됩니다. 의존성 주입은 컴포넌트(함수, 클래스 등) 간의 의존성을 외부에서 제공하는 방법입니다.FastAPI
mingkeJan 17, 2024FastAPI - Pydantic 에러 응답 변경 (feat.Exception Handler)FastAPI로 개발하면 pydantic을 통해 입력받은 데이터의 Validation을 하는 경우가 많습니다. pydantic에서 에러가 발생하면 422에러와 함께 pydantic에서 미리 정해놓은 에러 응답이 전송됩니다. 오늘은 이 부분을 내가 원하는대로 응답을 변경하는 방법을 알아보겠습니다.FastAPI
mingkeDec 22, 2023FastAPI - 나만의 FastAPI 라이브러리 만들기FastAPI는 microframework라서 개발하다보면 자유도가 참 높다고 느껴지는것 같습니다. 백엔드를 개발하는데 정말 필수적인 것들만 있고 나머지는 원하는 대로 만들어서 쓰면 되는것 같습니다.FastAPIPython
mingkeDec 4, 2023FastAPI - Gunicorn hooks 사용하기FastAPI Application을 배포할 때 일반적으로 Gunicorn을 많이 사용합니다. Gunicorn hooks를 소개하고, 최근 Gunicorn hooks를 사용한 경험을 공유하려고합니다.FastAPIGunicorn
mingkeDec 1, 2023FastAPI - PydanticCustomError 사용법FastAPI에서 Pydantic을 사용하면 기본적으로 유효성 검사에 실패했을 때 422에러를 발생시키고 정해진 응답을 반환합니다. 하지만 PydanticCustomError를 사용해서 Error를 커스텀 할 수 있습니다.FastAPIPydantic
mingkeNov 29, 2023FastAPI - FastAPI 유효성검사 Pydantic Validator 사용해서 데이터 유효성 검사하기Pydantic은 Python용 데이터 유효성 검사 라이브러리입니다. FastAPI에서 많이 사용됩니다. Pydantic은 데이터 모델을 정의하고 해당 모델의 유효성을 검사할 수 있습니다. Pydantic을 사용하면 더욱 안전하고 효율적인 API 개발이 가능합니다.FastAPIPydantic
mingkeNov 22, 2023FastAPI - Redis 캐시 사용하기FastAPI에서 Redis를 사용하는 방법에 대해서 간단하게 알아보겠습니다. 운영하고 있는 서비스 중에 전기차G - 전기차 충전소 찾기 가 있습니다. 공공API를 사용해서 전기차 충전소 위치와 충전기 정보를 제공하는 서비스 입니다.FastAPIRedis
mingkeNov 20, 2023FastAPI - Swagger에 Authorize 생성하기최근에 FastAPI로 API를 개발하던 중에 Authentication을 middleware로 구현하여 추가를 하였습니다. 그리고나서 생각해보니 Swagger에서 API를 실행해 볼 때도 인증이 들어가야 했습니다. FastAPI Swagger에서 Authorize 버튼을 만들어 Header에 key를 담아 실행할 수 있는 방법에 대해 알아보겠습니다.FastAPISwagger
mingkeNov 16, 2023FastAPI - Custom Exception Handler 사용하기FastAPI에서 커스텀 Exception Handler를 사용하는 방법을 알아보겠습니다. FastAPI API에서 다음과 같은 코드는 에러 응답을 반환합니다. FastAPI를 처음 쓸 때 HTTPException을 그냥 사용했었는데, status code와 detail message만 전달하니 함께 일하던 프론트엔드 동료가 error를 구분하기 어렵다고 구분할 수 있도록 code도 함께 넣어 전달해달라는 요청이 있었습니다.FastAPI
mingkeNov 16, 2023FastAPI - lifespan 사용하기FastAPI lifespan은 Application 시작과 종료까지의 기간을 의미합니다. 시작 이벤트와 종료 이벤트가 발생할 때 동작하는 로직을 구현하여 실행할 수 있으며, 시작 이벤트에서 발생한 리소스를 계속 유지할 수 있습니다.FastAPI
mingkeNov 12, 2023FastAPI - Async SQLALCHEMY 테스트 환경 구축하기테스트 코드의 중요성은 두 말하면 입이 아픈데요. SQLAlchemy를 비동기로 사용하면 테스트 환경을 구축하는 방법도 달라집니다. 오늘은 Pytest를 이용해서 SQLAlchemy를 비동기로 테스트하는 환경 구축을 공부해보겠습니다.FastAPIPytestSQLAlchemy
mingkeNov 11, 2023FastAPI + Async SQLALCHEMY 사용하기최신 애플리케이션 개발에서 효율성과 확장성은 가장 중요한 요소입니다. 비동기를 지원하는 ORM은 이러한 목표를 달성하는 데 중요한 역할을 할 수 있습니다. 비동기 API를 지원하는 Python Framework(요즘 제가 제일 좋아하는)FastAPI를 사용할 때 적용한다면 더 큰 효과를 볼 수 있습니다.FastAPISQLAlchemy