실버를 위한 코딩/파이썬 연습

FastAPI 기초 교육 자료 (입문 실습용)

forSilver 2025. 4. 3. 08:42
반응형

🏷️ FastAPI 기초 교육 자료 (입문 실습용)

📌 학습 목표

  • FastAPI 웹 서버를 실행할 수 있다.
  • URL 경로를 만들고 응답 메시지를 작성할 수 있다.
  • JSON 형식의 데이터를 주고받을 수 있다.
  • Swagger UI를 통해 API를 테스트할 수 있다.

1. FastAPI란?

  • Python으로 만든 빠르고 쉬운 웹 프레임워크
  • 웹 브라우저나 앱과 데이터를 주고받는 API 서버 구축에 최적화
  • 문서 자동 생성 (Swagger, Redoc)

2. 프로젝트 기본 구조

📁 예제 디렉터리 구조

my_project/
├── main.py         ← 여기에 서버 코드 작성

3. 예제 코드 작성하기

main.py 파일에 아래와 같이 작성합니다.

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/greet/{name}")
async def greet(name: str):
    return {"message": f"Hello {name}"}

@app.get("/calculate")
async def calculate(x: int, y: int):
    result = x + y
    return {"result": result}

class User(BaseModel):
    name: str
    email: str
    password: str

@app.post("/signup")
async def signup(user: User):
    return {"message": f"Welcome, {user.name}"}

4. 서버 실행하기

터미널에서 가상환경을 활성화한 후 아래 명령어 실행:

uvicorn main:app --reload --host 0.0.0.0 --port 8000
  • --reload: 코드 수정 시 자동 반영
  • --host 0.0.0.0: 외부 접속 허용
  • --port 8000: 접속 포트 지정

5. 브라우저에서 접속

접속 주소: http://서버IP:8000

예시: http://192.168.142.200:8000

🔹 자동 문서 보기

  • Swagger UI: http://서버IP:8000/docs
  • Redoc: http://서버IP:8000/redoc

자동 문서(Swagger)


6. API 테스트 예시

경로 설명 예시

/ 기본 인사 GET / → { "message": "Hello World" }
/greet/{name} 이름으로 인사 GET /greet/홍길동 → { "message": "Hello 홍길동" }
/calculate?x=2&y=3 계산 GET /calculate?x=2&y=3 → { "result": 5 }
/signup 사용자 등록 POST JSON 본문으로 전송

7. POST /signup 테스트 방법

🔸 예시 JSON 데이터

{
  "name": "kim",
  "email": "kim@example.com",
  "password": "1234"
}

🔸 PowerShell에서 테스트

Invoke-RestMethod -Uri "http://192.168.142.200:8000/signup" `
  -Method POST `
  -Headers @{"Content-Type"="application/json"} `
  -Body '{"name":"kim", "email":"kim@example.com", "password":"1234"}'

실패 후 성공(윈도우 파워셸)


8. 마무리 퀴즈

  1. FastAPI의 가장 큰 장점은 무엇인가요?
  2. GET, POST 방식의 차이는 무엇인가요?
  3. BaseModel은 어떤 역할을 하나요?
  4. /calculate 경로에 x=5, y=7로 요청하면 결과는?

💡 확장 아이디어

  • 회원 목록 저장하기 (리스트 사용)
  • 비밀번호 유효성 검사 추가
  • 날짜와 시간 출력하는 API 만들기
  • SQLite 데이터베이스 연동

✅ 마무리

FastAPI는 Python을 기반으로 하지만 구조는 웹 개발에 꼭 필요한 요소를 간단하고 명확하게 제공합니다.
이 기본 예제를 반복 연습하면, 실제 서비스용 API도 얼마든지 구현할 수 있습니다.