백엔드 기초집: Python FastAPILESSON 04
HTTP 요청·응답과 REST API 설계
난이도초급
예상 시간35분
선수지식이전 강의
4강. HTTP 요청·응답과 REST API 설계
1. 이번 강의에서 해결할 문제
기능을 추가할 때마다 임의의 URL을 만들면 클라이언트가 API를 예측할 수 없습니다. 게임 기록을 리소스로 보고 일관된 REST 계약을 작성합니다.
2. 학습 목표
3. 핵심 개념
REST API에서는 URL이 명사형 리소스를, HTTP 메서드가 행동을 표현합니다. GET은 조회, POST는 생성, PATCH는 부분 수정, DELETE는 삭제에 사용합니다. 성공 응답은 보통 200, 생성은 201, 본문 없는 삭제는 204를 사용하며 없는 리소스는 404로 알립니다.
4. 단계별 코드 예시
파일 경로: game-ranking-api/docs/api-design.md
docs/api-design.md
| Method | Path | 의미 | 성공 |
| --- | --- | --- | --- |
| GET | /records | 기록 목록 | 200 |
| POST | /records | 기록 생성 | 201 |
| GET | /records/{record_id} | 기록 상세 | 200 |
| PATCH | /records/{record_id} | 기록 일부 수정 | 200 |
| DELETE | /records/{record_id} | 기록 삭제 | 204 |
| GET | /rankings | 게임별 랭킹 | 200 |
파일 경로: game-ranking-api/app/main.py
app/main.py
from fastapi import FastAPI, status
app = FastAPI(title="Game Ranking API")
@app.post("/records", status_code=status.HTTP_201_CREATED)
def create_record() -> dict[str, object]:
return {"id": 1, "game_name": "Rule Break", "score": 1200}
실행 위치: game-ranking-api/
python -m uvicorn app.main:app --reload
Invoke-WebRequest -Method Post http://127.0.0.1:8000/records | Select-Object StatusCode, Content
5. 코드가 동작하는 이유
경로는 기록이라는 리소스를 나타내고 POST가 생성을 표현합니다. status_code는 실제 응답과 OpenAPI 문서에 201을 기록합니다. 아직 값은 메모리에 고정되어 있지만 계약부터 결정했습니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2HTTP와 REST 설계 점검
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
4강. HTTP 요청·응답과 REST API 설계 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.