Skip to content

챕터 1.2: HTTP 메서드 및 상태 코드

학습 시간: 40분


1. HTTP: 우주 통신 언어

당신이 비행 관제 센터(ЦУП)이고 API 서버가 우주선이라고 상상해 보세요. HTTP(하이퍼텍스트 전송 프로토콜)는 여러분 사이의 무선 통신입니다.

각 메시지에는 다음이 포함됩니다:

  • 메서드 → 무엇을 할 것인지 (예: "탐사선 발사")

  • 상태 코드 → 작업 결과 ("탐사선 성공적으로 발사됨!")

💡 우주 비유: GET /stars = "ЦУП → 우주선에게: 별의 좌표를 알려줘!" 200 OK = "우주선 → ЦУП에게: 좌표 전송 완료!"


2. 주요 HTTP 메서드

각 메서드는 우주 임무를 위한 명령 유형과 같습니다:

메서드 우주 비유 요청 예시 설명
GET 데이터 요청 (망원경) GET /planets 행성 목록 가져오기
POST 새 객체 전송 (로켓 발사) POST /satellites 새 위성 생성
PUT 객체 전체 업데이트 (궤도 수정) PUT /satellites/iss ISS 데이터 업데이트
DELETE 객체 파괴 (궤도 이탈) DELETE /debris/123 우주 쓰레기 삭제

⚡ 코드 예시 (Python):

import requests

# GET: 팔콘 9 로켓 데이터 가져오기
# SpaceX API의 실제 엔드포인트를 사용합니다.
response = requests.get("https://api.spacexdata.com/v4/rockets/5e9d0d95eda69973a809d1ec")
print(response.status_code, response.json()['name']) # 200 Falcon 9

# POST: 테스트 API에 새 게시물 생성
# jsonplaceholder 샌드박스 서비스를 사용합니다.
new_post = {"title": "Artemis Mission", "body": "Ready for launch", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=new_post)
print(response.status_code, response.json()['id'])  # 201 101 (또는 다른 ID)


3. 중요한 상태 코드

서버 응답은 우주선からの 신호와 같습니다:

그룹 코드 우주 비유 설명
2xx 200 ✅ "작업 완료!" 성공
201 🚀 "로켓 발사!" 객체 생성됨
3xx 301 🌍 "ЦУП이 새 주소로 이동됨" 리디렉션
4xx 400 ❌ "요청에 잘못된 좌표!" 클라이언트 오류
404 🪐 "행성을 찾을 수 없음!" 리소스 없음
5xx 500 🔥 "엔진 시스템 오류 발생!" 서버 오류

4. 실습: 상태 코드 처리

항상 API 응답을 확인하세요! 오류 처리 예시:

import requests

def get_post_data(post_id):
    """상태 코드를 처리하여 게시물 데이터를 가져오는 함수."""
    try:
        response = requests.get(f"https://jsonplaceholder.typicode.com/posts/{post_id}")

        # 응답 상태 코드 확인
        if response.status_code == 200:
            print(f"✅ 게시물 {post_id}의 데이터를 성공적으로 가져왔습니다!")
            return response.json()
        elif response.status_code == 404:
            print(f"⚠️ 게시물 {post_id}의 리소스를 찾을 수 없습니다!")
            return None
        else:
            # 다른 클라이언트(4xx) 또는 서버(5xx) 오류 처리
            print(f"🚨 오류가 발생했습니다! 상태 코드: {response.status_code}")
            return None

    except requests.exceptions.RequestException as e:
        # 연결 오류 처리 (예: 인터넷 없음)
        print(f"🔥 연결 오류: {e}")
        return None

# --- 함수 테스트 ---
print("--- 기존 게시물 검색 ---")
get_post_data(1)

print("\n--- 존재하지 않는 게시물 검색 ---")
get_post_data(9999) # 이 게시물은 존재하지 않으므로 404를 예상합니다.

🔭 실제 API 예시 (SpaceX): 요청: GET https://api.spacexdata.com/v4/ships/OCISLY 응답: 200 OK + 선박 데이터 요청: GET https://api.spacexdata.com/v4/ships/UNICORN 응답: 404 Not Found


복습 퀴즈

1. 별에 대한 데이터를 가져오려면 어떤 메서드를 사용해야 할까요?

2. `201 Created` 상태는 다음을 의미합니다:

3. 위성 데이터를 완전히 업데이트하는 메서드:

4. `500 Internal Server Error` 상태는 무엇을 의미할까요?


🚀 챕터 요약: HTTP 메서드는 우주 임무를 위한 당신의 명령이며, 상태 코드는 그 실행 보고서입니다. 기억하세요:

GET = "데이터 줘", POST = "새로운 것 생성", PUT = "모두 업데이트", DELETE = "파괴" 2xx = 성공, 4xx = 당신의 오류, 5xx = 서버 문제

발사를 준비하세요! 다음 챕터에서는 서버からの "전보"인 JSON 형식을 해독할 것입니다.

📌 실습: SpaceX API를 사용하여 GET /launches/latest를 보내고 응답 코드를 연구해 보세요!