Coming soon

FastAPI로 배우는 백엔드 프로그래밍 with 클린 아키텍처

모던 파이썬 웹 프레임워크 FastAPI로 TIL 앱 구축하기
$28.75
SKU
9791193926529

 

COMING SOON [판매 예정] 상품입니다.

[판매 예정] 상품은 출간일(Publication Date) 이후 주문이 가능합니다.

 

▷출간일 이후에도 아직 [판매 예정]으로 보이는 경우 info@kbookstore.com 으로 문의주세요.

주문 가능 여부를 확인 후 안내해 드리겠습니다.

COMING SOON [판매 예정] 상품입니다.

[판매 예정] 상품은 출간일(Publication Date) 이후 주문이 가능합니다.

* 출간일 이후에도 아직 [판매 예정]으로 보이는 경우 info@kbookstore.com 으로 문의주세요.

[Free shipping over $100]

Standard Shipping estimated by Wed 11/6 - Tue 11/12 (주문일로부 10-14 영업일)

Express Shipping estimated by Fri 11/1 - Tue 11/5 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2024/10/25
Pages/Weight/Size 188*245*15mm
ISBN 9791193926529
Categories IT 모바일 > 컴퓨터 공학
Description
현대적이며 빠르고 쉬운 FastAPI 사용법

파이썬 기반의 FastAPI는 플라스크보다 API 생성이 쉽고, 장고보다 가볍다. 이 책은 FastAPI를 활용해 백엔드 소프트웨어를 클린 아키텍처로 작성하는 법을 안내한다. 클린 아키텍처는 계층이 많아짐에 따라 코드의 양 또한 늘어나지만, 계층을 나누기 편한 FastAPI는 클린 아키텍처를 적용하기에 적합한 웹 프레임워크다. TIL 앱을 만들기 위해 먼저 FastAPI와 클린 아키텍처의 개념과 기능을 알아본 후 회원 가입, DI 도입, CRUD 기능, JWT, 환경변수 설정, 클린 아키텍처 계층 구현, 테스트 작성 등 한 단계씩 나아간다. 클린 아키텍처를 적용하는 과정을 통해 FastAPI라는 강력한 무기를 얻게 될 것이다.
Contents
베타리더 후기 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
Author
한용재
오랜 기간 휴대폰에 탑재되는 소프트웨어를 만들었고, 현재는 백엔드 엔지니어로 활동 중이다. 매년 새로운 언어나 프레임워크를 배우려고 노력한다. 『NestJS로 배우는 백엔드 프로그래밍』(제이펍, 2022)을 집필하였고, 『이펙티브 소프트웨어 테스팅』(제이펍, 2023) 등을 번역했다.
오랜 기간 휴대폰에 탑재되는 소프트웨어를 만들었고, 현재는 백엔드 엔지니어로 활동 중이다. 매년 새로운 언어나 프레임워크를 배우려고 노력한다. 『NestJS로 배우는 백엔드 프로그래밍』(제이펍, 2022)을 집필하였고, 『이펙티브 소프트웨어 테스팅』(제이펍, 2023) 등을 번역했다.