책소개
FastAPI의 핵심 기능과 5가지 기술 스택(몽고DB, 도커, pydantic, SQLModel, pytest)으로
이벤트 플래너 애플리케이션을 처음부터 끝까지 완성해본다!
이 책의 강점은 ‘이벤트 플래너 애플리케이션 완성’이라는 목표를 가지고 라우팅부터 데이터베이스 연결, 인증, 테스트, 배포까지 FastAPI의 핵심 기능을 단계별로 적용해본다는 점입니다. 또한 쉽게 실습을 진행할 수 있도록 윈도우와 리눅스 명령어를 각각 제공합니다.
실습 코드는 간결하고 명확합니다. 플라스크, 장고 같은 웹 프레임워크보다 배우기 쉬운 FastAPI의 장점이 잘 반영되어 있기 때문이죠. 반대로 핵심 기능과 코드에 관한 설명은 FastAPI 공식 문서보다 꼼꼼하고 자세합니다. 따라서 웹 개발 초보자도, 다른 프레임워크로 웹 개발을 경험해본 기존 개발자도 웹 개발 실력을 한층 더 높일 수 있습니다.
FastAPI에 익숙해진 후에는 저자가 블로그에서 제공하는 실습 자료(Okteto를 사용한 방명록 애플리케이션 구축과 몽고DB, JWT 인증, 리액트를 활용한 애플리케이션 구축 예제)를 통해 추가 학습도 진행할 수 있습니다.
저자소개
숙련된 파이썬 개발자이자 소프트웨어 백엔드 엔지니어다. 기술 저자로도 활동하며 폭넓은 경험과 기술을 지니고 있다. 명령줄 애플리케이션뿐만 아니라 FastAPI를 사용한 백엔드 애플리케이션, 알고리즘 기반 보물찾기 도구 등을 개발했다. 또한 블로그에서 파이썬을 가르치고 수학 문제 푸는 것을 즐긴다. 2022년까지는 수자원 및 환경공학 프로젝트에 참여했으며 지금은 Auth0, LogRocket, Okteto 등의 초대 기술 저자로 활동하고 있다.
목차
PART 1 FastAPI 시작하기
CHAPTER 1 FastAPI 소개
1.1 Git 기초
_Git 설치
_Git 실행
_Git 브랜치
1.2 virtualenv를 사용한 개발 환경 구축
_가상 환경 생성
_가상 환경 활성화/비활성화
1.3 pip을 사용한 패키지 관리
_pip 설치
_기본 명령
1.4 도커 설정
_도커파일
1.5 간단한 FastAPI 애플리케이션 개발
정리하기
CHAPTER 2 라우팅
2.1 FastAPI의 라우팅
_라우팅 예
2.2 APIRouter 클래스를 사용한 라우팅
2.3 pydantic 모델을 사용한 요청 바디 검증
_중첩 모델
2.4 경로 매개변수와 쿼리 매개변수
_경로 매개변수
_쿼리 매개변수
2.5 요청 바디
_FastAPI 자동 문서화
2.6 간단한 CRUD 애플리케이션 개발
정리하기
CHAPTER 3 응답 모델과 오류 처리
3.1 FastAPI의 응답
3.2 응답 모델 작성
3.3 오류 처리
정리하기
CHAPTER 4 템플릿팅
4.1 Jinja
_필터
_if문
_반복문
_매크로
_템플릿 상속
4.2 FastAPI에서 Jinja를 사용하는 방법
정리하기
PART 2 FastAPI 애플리케이션 개발하기
CHAPTER 5 구조화
5.1 FastAPI 애플리케이션 구조화
_이벤트 플래너 애플리케이션 개발
_모델 구현
_라우트 구현
정리하기
CHAPTER 6 데이터베이스 연결
실습 환경
6.1 SQLModel 설정
_테이블
_로우
_세션
6.2 데이터베이스 생성
_이벤트 생성
_이벤트 조회
_이벤트 변경
_이벤트 삭제
6.3 몽고DB 설정
_문서
_데이터베이스 초기화
6.4 CRUD 처리
_생성 처리
_조회 처리
_변경 처리
_삭제 처리
_routes/events.py
_routes/users.py
정리하기
CHAPTER 7 보안
7.1 FastAPI의 인증 방식
_의존성 주입
_의존 라이브러리 생성
7.2 OAuth2와 JWT를 사용한 애플리케이션 보안
_패스워드 해싱
_액세스 토큰 생성과 검증
_사용자 인증
7.3 애플리케이션 변경
_로그인 라우트 변경
_이벤트 라우트 변경
_이벤트 문서 클래스와 라우트 변경
7.4 CORS 설정
정리하기
PART 3 FastAPI 애플리케이션 테스트 및 배포하기
CHAPTER 8 테스트
8.1 pytest를 사용한 단위 테스트
_픽스처를 사용한 반복 제거
8.2 테스트 환경 구축
8.3 REST API 라우트 테스트 작성
_사용자 등록 라우트 테스트
_로그인 라우트 테스트
_CRUD 라우트 테스트
_조회 라우트 테스트
_생성 라우트 테스트
_변경 라우트 테스트
_삭제 라우트 테스트
8.4 테스트 커버리지
정리하기
CHAPTER 9 배포
9.1 배포 준비
_의존 라이브러리 관리
_환경 변수 설정
9.2 도커를 사용한 배포
_도커파일 작성
_도커 이미지 빌드
_로컬에 애플리케이션 배포
_애플리케이션 실행
9.3 도커 이미지 배포
_데이터베이스 배포
정리하기