챕터 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
복습 퀴즈
🚀 챕터 요약: HTTP 메서드는 우주 임무를 위한 당신의 명령이며, 상태 코드는 그 실행 보고서입니다. 기억하세요:
GET
= "데이터 줘",POST
= "새로운 것 생성",PUT
= "모두 업데이트",DELETE
= "파괴"2xx
= 성공,4xx
= 당신의 오류,5xx
= 서버 문제
발사를 준비하세요! 다음 챕터에서는 서버からの "전보"인 JSON 형식을 해독할 것입니다.
📌 실습: SpaceX API를 사용하여
GET /launches/latest
를 보내고 응답 코드를 연구해 보세요!