Files
fastapi_tutorail/01_fastapi_first_step/DESCRIPTION.md
2026-02-27 12:13:57 +09:00

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):
    • 서버는 어떤 데이터가 들어올지 미리 정의합니다.
    • namemessage가 문자열(str)인지 자동으로 검사합니다.

Slide 4: 메시지 전송 (POST Request)

"서버로 메시지 보내기"

메시지 전송 및 수신 흐름

  1. 사용자가 내용을 입력합니다.
  2. 클라이언트가 서버의 /messages 주소로 데이터를 실어 보냅니다. (POST)
  3. 서버는 현재 시간을 계산하여 메시지와 함께 저장합니다.
    • 서버 로직: datetime.now().strftime(...)를 사용하여 친숙한 시간 형식으로 변환

Slide 5: 메시지 확인 (GET Request & Polling)

"새로운 메시지 가져오기"

  • 효율적인 조회: 모든 메시지를 매번 다 가져오는 것은 비효율적입니다.
  • 인덱스 활용 (start 파라미터):
    • 클라이언트는 "내가 5번까지 봤으니, 6번부터 줘!"라고 요청합니다.
    • 예: /messages?start=5
  • 결과: 클라이언트는 아직 보지 못한 '새 소식'만 화면에 출력합니다.

Slide 6: 실습 흐름 (Workflow)

"직접 실행해 봅시다!"

  1. 서버 실행: python server.py (비서가 전화를 기다리는 상태)
  2. 클라이언트 실행: python client.py (사용자가 대화를 시작)
  3. 상호작용:
    • 1번 선택: 메시지 작성 및 전송
    • 2번 선택: 새 메시지 확인 (다른 사람이 보낸 것도 보임!)
    • 3번 선택: 종료

Slide 7: 요약 및 발전 방향

"무엇을 배웠나요?"

  • HTTP Method: 데이터를 보낼 때는 POST, 가져올 때는 GET을 사용합니다.
  • Stateless: 서버는 클라이언트가 누구인지 기억하지 않지만, 요청에 따라 데이터를 관리합니다.
  • Next Step:
    • 데이터베이스(DB) 연결하여 재시작해도 대화 유지하기
    • 웹 브라우저 화면(HTML/CSS)으로 예쁘게 만들기
    • 실시간 통신(WebSocket) 적용해보기