LabHub

FastAPI — 타입이 곧 계약이다 · 계약과 수명 · 실습

새는 필드와 멈추는 루프

LabHub 에서 이어서 보기

목표

실무에서 FastAPI 로 가장 자주 터지는 두 가지를 직접 일으키고 고칩니다.

규칙

서버 띄우기

cd /root/work/apiuvicorn app:app --host 0.0.0.0 --port 8000 > /tmp/uv.log 2>&1 &curl -s localhost:8000/healthz

--reload 는 쓰지 마세요. 파일을 고쳤으면 kill %1 후 다시 띄우는 편이
무엇이 돌고 있는지 분명합니다.

단계

1. /healthz01-healthz.txt
2. Pydantic 검증, 422 → 02-422.json
3. 일부러 유출 → 03-leak.json
4. response_model 로 차단
5. HTTPException 404
6. Depends(get_store)
7. async def vs def07-block.txt · 07-unblock.txt
8. dependency_overrides 테스트
9. 정리 → 09-notes.md

참고

검증 코드를 손으로 쓰지 마세요. if not isinstance(...) 를 쓰고 있다면
타입 힌트가 할 일을 뺏은 것입니다.

단계 9개

  1. 서버를 띄운다
  2. 잘못된 입력을 거절시킨다
  3. 비밀 필드를 일부러 흘려 본다
  4. 출력 모델로 막는다
  5. 없는 것에는 404 를 준다
  6. 의존성으로 저장소를 주입한다
  7. 이벤트 루프를 멈춰 보고 고친다
  8. 의존성을 갈아 끼워 테스트한다
  9. 두 사고를 요약한다