3.6 KiB
3.6 KiB
[수업 자료] FastAPI 첫 걸음: 간단한 채팅 프로그램 만들기
이 자료는 FastAPI를 사용하여 기본적인 클라이언트-서버 구조의 채팅 프로그램을 이해하기 위한 설명서입니다. PPT 제작 시 각 섹션을 슬라이드로 활용할 수 있도록 구성되었습니다.
Slide 1: 프로젝트 개요
"FastAPI로 만드는 나만의 채팅 서버"
- 목표: Python의 현대적인 웹 프레임워크인 FastAPI를 이용해 메시지를 주고받는 서버와 클라이언트를 구현합니다.
- 핵심 기술:
- FastAPI: 빠르고 생산적인 Python 웹 프레임워크
- Uvicorn: ASGI 서버로 FastAPI 앱을 실행
- Pydantic: 데이터 검증 및 설정을 위한 라이브러리
- Requests: Python에서 HTTP 요청을 보내는 라이브러리
Slide 2: 전체 구조 (Architecture)
"누가 무엇을 하나요?"
- 서버 (Server -
server.py):- 메시지를 저장하는 장소 (메모리 내 리스트)
- 클라이언트의 요청을 기다리고 처리함 (API 제공)
- 메시지에 '언제' 보냈는지 시간을 기록함
- 클라이언트 (Client -
client.py):- 사용자와 직접 소통하는 화면 (터미널)
- 서버에 메시지를 보내거나(POST), 새로운 메시지를 가져옴(GET)
Slide 3: 데이터의 약속 (JSON & Model)
"서버와 클라이언트는 어떻게 대화하나요?"
- 데이터 형식 (JSON):
{ "name": "고도푸", "message": "안녕하세요!" } - 데이터 모델 (Pydantic):
- 서버는 어떤 데이터가 들어올지 미리 정의합니다.
name과message가 문자열(str)인지 자동으로 검사합니다.
Slide 4: 메시지 전송 (POST Request)
"서버로 메시지 보내기"
- 사용자가 내용을 입력합니다.
- 클라이언트가 서버의
/messages주소로 데이터를 실어 보냅니다. (POST) - 서버는 현재 시간을 계산하여 메시지와 함께 저장합니다.
- 서버 로직:
datetime.now().strftime(...)를 사용하여 친숙한 시간 형식으로 변환
- 서버 로직:
Slide 5: 메시지 확인 (GET Request & Polling)
"새로운 메시지 가져오기"
- 효율적인 조회: 모든 메시지를 매번 다 가져오는 것은 비효율적입니다.
- 인덱스 활용 (
start파라미터):- 클라이언트는 "내가 5번까지 봤으니, 6번부터 줘!"라고 요청합니다.
- 예:
/messages?start=5
- 결과: 클라이언트는 아직 보지 못한 '새 소식'만 화면에 출력합니다.
Slide 6: 실습 흐름 (Workflow)
"직접 실행해 봅시다!"
- 서버 실행:
python server.py(비서가 전화를 기다리는 상태) - 클라이언트 실행:
python client.py(사용자가 대화를 시작) - 상호작용:
- 1번 선택: 메시지 작성 및 전송
- 2번 선택: 새 메시지 확인 (다른 사람이 보낸 것도 보임!)
- 3번 선택: 종료
Slide 7: 요약 및 발전 방향
"무엇을 배웠나요?"
- HTTP Method: 데이터를 보낼 때는 POST, 가져올 때는 GET을 사용합니다.
- Stateless: 서버는 클라이언트가 누구인지 기억하지 않지만, 요청에 따라 데이터를 관리합니다.
- Next Step:
- 데이터베이스(DB) 연결하여 재시작해도 대화 유지하기
- 웹 브라우저 화면(HTML/CSS)으로 예쁘게 만들기
- 실시간 통신(WebSocket) 적용해보기

