🚀 FastAPI 입문 가이드: 설치부터 실행까지 한 번에!(1일차)

2025. 5. 26. 18:34·특강

🚀 FastAPI 입문 가이드: 설치부터 실행까지 한 번에!


✅ 0. 개발 환경 준비

FastAPI 프로젝트를 시작하기 위한 가장 기초적인 단계입니다.

python3.13 -m venv .fastapi      # 가상환경 생성
source .fastapi/bin/activate     # 가상환경 활성화
pip install "fastapi[standard]"  # FastAPI + Uvicorn 등 필수 패키지 설치
  • fastapi[standard]는 uvicorn, httpx, pydantic, jinja2 등 개발에 필요한 전체 구성 포함
  • .fastapi 폴더는 가상환경 디렉토리입니다

📁 main.py 생성하기

FastAPI 앱을 정의할 핵심 파일입니다.

touch main.py

✅ 서버 실행 방법

  1. fastapi dev (fastapi-cli 설치 시 사용 가능)
fastapi dev
  1. 공식 실행 방식 (uvicorn)
uvicorn main:app --reload
  • --reload: 코드 변경 시 서버 자동 재시작 (개발 환경 전용)

🔎 API 테스트 방법: /docs 자동 문서 활용

  • 브라우저 접속: http://127.0.0.1:8000/docs
  • Swagger UI 제공 → 직접 버튼 클릭으로 요청 실행 가능
  • 별도로 Postman이 없어도 테스트 가능

📌 API 예제 코드 정리

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

1️⃣ Path Parameter 예제

@app.get("/items/{item_id}")
def get_item_handler(item_id: int):
    return {"message": item_id}
  • /items/100 → item_id = 100으로 받음

2️⃣ Query Parameter 예제

@app.get("/items")
def get_items_handler(max_price: int = 0, category: str = ""):
    if category:
        return {"message": {"category": category, "max_price": max_price}}
    return {"message": {"max_price": max_price}}
  • /items?max_price=1000&category=food 형태로 요청
  • max_price, category는 선택적 값으로 처리 가능

3️⃣ Request Body (Pydantic 사용)

class ItemCreateRequest(BaseModel):
    name: str
    price: float

@app.post("/items")
def create_item_handler(body: ItemCreateRequest):
    return {"name": body.name, "price": body.price}
  • POST 요청 시 JSON 데이터 전송
{
  "name": "Laptop",
  "price": 1999.99
}
  • 자동으로 ItemCreateRequest 모델에 매핑되고 검증됨

✅ 핵심 개념 요약

개념 설명

Path Parameter URL 경로에 포함된 값 (예: /items/1)
Query Parameter URL 뒤에 붙는 조건 값 (예: ?category=food)
Request Body POST 요청 시 JSON 형태로 전달되는 본문 데이터
Pydantic 데이터 검증 + 자동 변환을 처리하는 모델링 도구
/docs FastAPI가 자동으로 제공하는 Swagger 테스트 UI

🧠 실전 팁

  • 개발 초기엔 uvicorn main:app --reload 로 빠르게 시작
  • 모든 요청은 자동 타입 검증됨 ("20"도 int로 자동 변환)
  • 오류 발생 시 422 응답으로 에러 메시지를 친절하게 반환

✅ 마무리 한 줄 요약

FastAPI는 main.py 하나로도 강력한 API 서버를 만들 수 있으며, Pydantic과 /docs 덕분에 검증과 테스트도 자동화됩니다!

'특강' 카테고리의 다른 글

[FastAPI 1일차] FastAPI 튜토리얼: 개념부터 코드까지 한눈에 정리 2/2 (250526)  (0) 2025.05.26
[FastAPI 1일차] FastAPI 튜토리얼: 개념부터 코드까지 한눈에 정리 1/2 (250526)  (0) 2025.05.26
[Django 4일차] Django REST Framework Generic view: 추상화, mixin, 실전 예시까지!4/4 (short_url 프로젝트)(250515)  (0) 2025.05.15
[Django 4일차] Django REST Framework 핵심 요약: Serializer와 View의 실전 활용 3/4 (short_url 프로젝트)(250515)  (0) 2025.05.15
[Django 4일차] Django를 백엔드 프레임워크로 활용하기 - DRF 입문 가이드 1/4 (short_url 프로젝트)(250515)  (0) 2025.05.15
'특강' 카테고리의 다른 글
  • [FastAPI 1일차] FastAPI 튜토리얼: 개념부터 코드까지 한눈에 정리 2/2 (250526)
  • [FastAPI 1일차] FastAPI 튜토리얼: 개념부터 코드까지 한눈에 정리 1/2 (250526)
  • [Django 4일차] Django REST Framework Generic view: 추상화, mixin, 실전 예시까지!4/4 (short_url 프로젝트)(250515)
  • [Django 4일차] Django REST Framework 핵심 요약: Serializer와 View의 실전 활용 3/4 (short_url 프로젝트)(250515)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (702)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (40)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🚀 FastAPI 입문 가이드: 설치부터 실행까지 한 번에!(1일차)
상단으로

티스토리툴바