본문으로 건너뛰기
백엔드 기초집: 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

HTTP와 REST 설계 점검

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1게임 기록 목록을 조회하는 REST API 경로와 메서드로 가장 알맞은 것은 무엇인가요?
  2. 문제 2새 기록이 정상적으로 생성되었을 때 가장 알맞은 HTTP 상태 코드는 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

4강. HTTP 요청·응답과 REST API 설계 미완료 상태