로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
02 라우트 생성 및 HTTP 메서드 이해 | ✅ 편저: 코담 운영자
2강: FastAPI 라우트 생성 및 HTTP 메서드 이해
🔗 소스
🌐 HTTP 메서드란?
FastAPI에서는 아래와 같은 HTTP 메서드를 사용해 API 요청의 목적을 구분합니다:
메서드 | 설명 |
---|---|
GET | 데이터를 조회 (읽기 전용) |
POST | 새로운 데이터 생성 (예: 폼 제출, DB 추가) |
PUT | 기존 데이터 수정 (전체 또는 일부) |
DELETE | 데이터 삭제 |
각 메서드를 적절히 사용하면 API의 명확성과 효율성이 높아집니다.
🛠️ FastAPI 라우트 예제
1. GET 요청 (데이터 조회)
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Welcome to FastAPI!"}
- 루트 경로(
/
)에 GET 요청이 오면 환영 메시지를 반환
실행 방법
uvicorn main:app --reload
- 실행 후 브라우저에서 http://127.0.0.1:8000 접속
- Swagger 문서: http://127.0.0.1:8000/docs
2. POST 요청 (데이터 생성)
from fastapi import FastAPI
app = FastAPI()
@app.post("/items/")
def create_item(name: str, price: float):
return {"name": name, "price": price}
/items/
경로에 POST 요청 시 name과 price를 받아 JSON 응답 반환- FastAPI는 타입 힌트를 바탕으로 자동 유효성 검사 수행
📌 테스트 방법
- Swagger UI 접속 (/docs)
/items/
POST 항목 선택 → 예시 데이터 입력 → 실행
3. PUT 요청 (데이터 수정)
@app.put("/items/{item_id}")
def update_item(item_id: int, price: float):
return {"item_id": item_id, "new_price": price}
item_id
를 경로 매개변수로 받아 해당 항목의 가격을 수정- 경로:
/items/1
, 요청 body:price
4. DELETE 요청 (데이터 삭제)
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
return {"message": f"Item {item_id} deleted."}
item_id
에 해당하는 항목을 삭제 (예제에서는 실제 DB 삭제는 생략)- 삭제 확인 메시지 반환
✅ 요약
- FastAPI는 각 HTTP 메서드를 데코레이터로 간단히 선언 가능
- Swagger 문서를 통해 브라우저에서 직접 API 테스트 가능
- GET, POST, PUT, DELETE를 통해 CRUD 구조를 명확하게 구성 가능
다음 강의에서는 경로 매개변수와 쿼리 매개변수를 활용한 유연한 API 설계 방법을 알아봅니다.
📌 참고: 본 강의는 FastAPI 학습 시리즈 기반으로 제작되었습니다.