책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 파이썬
· ISBN : 9791193926529
· 쪽수 : 232쪽
· 출판일 : 2024-10-25
책 소개
목차
베타리더 후기 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
저자소개
리뷰
책속에서
API를 만들면 이를 사용할 다른 구성원에게 전달해야 한다. 조직이 작고 API 사용자가 같은 공간에 있으며 프레임워크의 코드를 이해하고 있다면 소스 코드를 공유해도 상관없다. 하지만 사용하는 언어와 기술 스택이 다른 프런트엔드 개발자가 API 사용자라면 어떻게 사용법을 설명해야 할까? 텍스트로 나름의 형식으로 기술할 수도 있고, 스프레드시트에 보기 좋게 정리할 수도 있다. 심지어 아직도 이런 방법을 많이 사용한다. 하지만 프로그램과 마찬가지로 문서도 레거시로 굳어지면 바꾸기 힘든 법이다. 문서를 배포하는 가장 좋은 방법은 소스 코드에서 API를 문서를 생성하는 것이고, FastAPI는 이를 별다른 설정 없이 지원한다.
클린 아키텍처의 의존성 규칙은 그 의존성의 방향이 안으로 향하는 데에 있다. 그림 2-1의 좌측에 바깥 계층에서 안쪽으로 향하는 화살표가 있다. 이 화살표가 의존성의 방향을 나타낸다. 데이터의 형식 역시 마찬가지다. 고수준의 데이터 형식은 저수준에서 자유롭게 사용할 수 있다. 하지만 고수준의 구성 요소가 저수준의 데이터 형식에 의존하면 안 된다. 이는 외부 변경으로부터 내부 요소를 격리해 보호하기 위함이다. 외부에서 제공되는 프레임워크나 라이브러리는 우리의 의지와 상관없이 업데이트될 수 있다. 이러한 변경이 발생했을 때 만약 그 라이브러리의 모듈에 직접 의존하고 있다면 내부의 요소를 함께 수정해야 한다.