실버를 위한 코딩/파이썬 연습
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
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. 마무리 퀴즈
- FastAPI의 가장 큰 장점은 무엇인가요?
- GET, POST 방식의 차이는 무엇인가요?
- BaseModel은 어떤 역할을 하나요?
- /calculate 경로에 x=5, y=7로 요청하면 결과는?
💡 확장 아이디어
- 회원 목록 저장하기 (리스트 사용)
- 비밀번호 유효성 검사 추가
- 날짜와 시간 출력하는 API 만들기
- SQLite 데이터베이스 연동
✅ 마무리
FastAPI는 Python을 기반으로 하지만 구조는 웹 개발에 꼭 필요한 요소를 간단하고 명확하게 제공합니다.
이 기본 예제를 반복 연습하면, 실제 서비스용 API도 얼마든지 구현할 수 있습니다.