베타리더 후기 ix
시작하며 xii
이 책에 대하여 xiv
CHAPTER 1 FastAPI 개발 환경 구축 1
1.1 FastAPI 소개 1
1.2 포어트리를 이용한 가상 환경과 의존성 관리 5
1.3 Hello, FastAPI 10
1.4 API 문서화 14
1.5 데이터베이스 설정 19
1.6 책에서 만들 애플리케이션: TIL 22
1.7 마무리 23
CHAPTER 2 클린 아키텍처 25
2.1 아키텍처가 필요한 이유 25
2.2 분할 정복 29
2.3 클린 아키텍처의 주요 4계층 30
__2.3.1 도메인(엔티티) 계층 32
__2.3.2 애플리케이션(유스 케이스) 계층 33
__2.3.3 인터페이스(인터페이스 어댑터) 계층 34
__2.3.4 인프라스트럭처(프레임워크 및 드라이버) 계층 35
2.4 의존관계 역전 원칙 36
2.5 마무리 37
CHAPTER 3 회원 가입 39
3.1 User 도메인 39
3.2 회원 가입 유스 케이스 41
__3.2.1 ULID 41
__3.2.2 유저 저장 42
__3.2.3 중복 유저 검사 44
__3.2.4 패스워드 암호화 45
3.3 회원 가입 인터페이스 47
__3.3.1 API 라우터 47
__3.3.2 파이단틱을 이용한 유효성 검사 48
__3.3.3 유효성 검사 오류의 상태 코드를 400 Bad Request로 변경하기 50
__3.3.4 유저 생성 유스 케이스 호출 52
__3.3.5 클래스 기반 라우터 53
3.4 회원 정보 영속화 54
__3.4.1 SQLAlchemy ORM 적용 54
__3.4.2 Alembic으로 테이블 생성 및 리비전 관리 56
__3.4.3 UserRepository 구현 62
3.5 마무리 65
CHAPTER 4 의존성 주입 67
4.1 Depends 68
4.2 dependency-injector 69
4.3 마무리 74
CHAPTER 5 회원 리소스의 CRUD 기능 완성 75
5.1 유저 메모 속성 추가 75
5.2 유저 정보 업데이트 78
5.3 유저 목록 조회 82
__5.3.1 테스트용 유저 데이터 생성 82
__5.3.2 유저 목록 조회 82
__5.3.3 페이징 84
5.4 회원 탈퇴(유저 삭제) 88
5.5 파이단틱 유효성 검사 91
__5.5.1 요청 파라미터/본문 검사 91
__5.5.2 파이단틱 응답 모델 95
5.6 마무리 97
CHAPTER 6 비동기 프로그래밍 99
6.1 파이썬에서 동시성을 처리하는 방법 99
6.2 FastAPI의 비동기 처리 101
6.3 비동기 적용 기준 104
6.4 마무리 105
CHAPTER 7 로그인 107
7.1 JWT 107
__7.1.1 헤더 109
__7.1.2 페이로드 110
__7.1.3 시그니처 111
7.2 로그인 112
7.3 JWT 인증/인가 116
__7.3.1 토큰에 역할 추가 116
__7.3.2 일반 유저용 API 인증/인가 118
__7.3.3 어드민용 API 인증/인가 121
7.4 마무리 124
CHAPTER 8 환경변수 125
8.1 dotenv 126
8.2 config.py: 환경변수 관리 모듈 127
8.3 환경변수 적용 128
8.4 마무리 130
CHAPTER 9 TIL Note 131
9.1 도메인 계층 구현 132
9.2 애플리케이션 계층 구현 134
9.3 인터페이스 계층 구현 139
__9.3.1 노트 생성 140
__9.3.2 노트 목록 조회/노트 상세 조회 141
__9.3.3 노트 업데이트 143
__9.3.4 노트 삭제 144
__9.3.5 태그 이름으로 노트 검색 144
9.4 인프라 계층 구현 145
__9.4.1 Note, Tag 테이블 모델링 145
__9.4.2 테이블 마이그레이션 147
__9.4.3 노트 저장소: 노트 조회 150
__9.4.4 노트 저장소: 노트 생성 152
__9.4.5 노트 저장소: 노트 업데이트 153
__9.4.6 노트 저장소: 노트 삭제 154
__9.4.7 노트 저장소: 태그명으로 노트 조회 155
9.5 마무리 156
CHAPTER 10 백그라운드 작업: 환영 이메일 발송 157
10.1 BackgroundTasks 158
__10.1.1 BackgroundTasks란? 158
__10.1.2 BackgroundTasks로 이메일 전송 160
10.2 셀러리 166
__10.2.1 셀러리란? 166
__10.2.2 셀러리 환경 설정 169
__10.2.3 셀러리 태스크 수행 예시 171
__10.2.4 셀러리로 이메일 전송 176
10.3 마무리 178
CHAPTER 11 미들웨어 179
11.1 미들웨어 예시 181
11.2 콘텍스트 변수 183
11.3 유저 활동을 추적하는 로깅 186
__11.3.1 유저 정보를 콘텍스트 변수로 저장하는 미들웨어 186
__11.3.2 커스텀 로거 188
__11.3.3 유저 ID가 포함된 로그 출력 190
11.4 마무리 191
CHAPTER 12 테스팅 193
12.1 도메인 계층 테스트 194
12.2 애플리케이션 계층 테스트 196
__12.2.1 테스트 더블 197
__12.2.2 유저 생성 유스 케이스 테스트 198
12.3 인터페이스 계층 테스트 204
12.4 인프라 계층 테스트 206
12.5 마무리 209
찾아보기 212