본문으로 건너뛰기
API 도구 기초집LESSON 02

HTTP 요청·응답 구조와 상태 코드

난이도입문 → 초급
예상 시간30분
선수지식이전 강의

2강. HTTP 요청·응답 구조와 상태 코드

1. 이번 강의에서 해결할 문제​

게임 기록·랭킹 API를 테스트하면서 HTTP 메시지의 메서드·경로·헤더·본문과 상태 코드 계열을 읽습니다. 수동으로 한 번 성공하는 데서 끝내지 않고 같은 결과를 다시 확인할 수 있는 요청으로 남깁니다.

2. 학습 목표​

3. 핵심 개념​

요청은 메서드, URL, 헤더, 선택적 본문으로 구성되고 응답은 상태 코드, 헤더, 본문으로 구성됩니다. 2xx는 성공, 4xx는 요청 또는 인증 문제, 5xx는 서버 처리 실패를 뜻합니다. 숫자 하나만 보지 말고 오류 JSON의 detail 같은 필드도 함께 확인해야 원인을 좁힐 수 있습니다.

요청과 응답을 구성하는 값​

구분항목답하는 질문예
요청method무엇을 하려는가GET
요청URL/path어느 서버의 어떤 대상인가/health
요청headers본문 형식·인증 같은 부가 정보는 무엇인가Accept: application/json
요청body서버에 보낼 데이터가 있는가GET health에는 없음
응답status요청을 어떻게 처리했는가200 OK, 404 Not Found
응답headers응답 표현과 캐시 정보는 무엇인가Content-Type: application/json
응답body실제 결과 또는 오류 세부 정보는 무엇인가{"status":"ok"}

가장 작은 성공·실패 메시지 비교​

성공 요청과 응답
GET /health HTTP/1.1
Host: 127.0.0.1:8000

HTTP/1.1 200 OK
Content-Type: application/json

{"status":"ok"}
없는 경로 요청과 응답
GET /not-found HTTP/1.1
Host: 127.0.0.1:8000

HTTP/1.1 404 Not Found
Content-Type: application/json

{"detail":"Not Found"}

404는 서버에 연결됐지만 해당 method와 path 조합을 찾지 못했다는 뜻입니다. 서버가 꺼져 연결 자체가 실패한 경우에는 HTTP 상태 코드가 도착하지 않습니다. 두 실패를 구분해야 잘못된 경로를 고치면서 서버를 재설치하는 일을 피할 수 있습니다.

4. 단계별 실습​

실습 경로: C:\dev\game-ranking-api-tests

실행 전 상태: 로컬 API 서버가 127.0.0.1:8000에서 실행되고 /health가 JSON을 반환해야 합니다. 먼저 서버 터미널을 열어 두고 실제 비밀 값 없는 로컬 주소만 사용합니다.

  1. 정상 상태 엔드포인트의 응답 헤더까지 저장합니다.
  2. 없는 경로로 404를 의도적으로 만듭니다.
  3. 성공과 실패의 상태·본문을 표로 비교합니다.
PowerShell
$baseUrl = "http://127.0.0.1:8000"
Invoke-WebRequest -Method Get -Uri "$baseUrl/health" | Select-Object StatusCode, Headers, Content
try { Invoke-RestMethod -Uri "$baseUrl/not-found" } catch { $_.Exception.Response.StatusCode.value__ }

구체적인 성공과 실패 결과 읽기​

  1. $baseUrl 한 곳에 공통 서버 주소를 저장해 경로만 바꿉니다.
  2. Invoke-WebRequest는 상태·헤더·본문을 모두 가진 응답 객체를 반환합니다.
  3. Select-Object가 이번 비교에 필요한 세 항목만 화면에 보여 줍니다.
  4. PowerShell은 4xx를 예외로 처리하므로 try/catch에서 응답 상태를 읽습니다.
  5. 성공 요청은 200과 JSON 본문, 실패 요청은 404와 오류 JSON이 나와야 합니다.

오류 본문도 기록하려면 catch 안에서 $_.ErrorDetails.Message를 확인합니다. PowerShell 버전에 따라 응답 객체 속성이 다를 수 있으므로 상태 접근이 실패하면 $_.Exception.Response | Format-List *로 제공되는 필드를 먼저 봅니다.

Postman의 버튼·탭 이름은 버전에 따라 달라질 수 있습니다. 메뉴가 다르면 설치된 앱의 도움말과 Postman 공식 문서를 먼저 확인합니다.

5. 요청과 응답이 동작하는 이유​

서버는 라우팅 성공 여부와 처리 결과를 상태 코드로 요약합니다. 헤더는 표현 형식과 캐시 같은 메타데이터를 전달하고, JSON 본문은 실제 결과나 오류 세부 정보를 전달합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

다음 강의 연결​

HTTP 메시지를 읽는 기준을 만들었으므로 3강. Postman 설치와 첫 GET 요청에서 같은 성공·실패 요청을 저장 가능한 GUI 요청으로 재현합니다.

MINI QUIZ

HTTP 요청·응답 구조와 상태 코드 미니 퀴즈

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

0 / 2
  1. 문제 1“HTTP 요청·응답 구조와 상태 코드” 코드 리뷰에서 유지해야 할 설계 원칙은 무엇인가요?
  2. 문제 2‘모든 실패를 서버 장애로 봄’ 실수를 판단할 때 “HTTP 요청·응답 구조와 상태 코드” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

2강. HTTP 요청·응답 구조와 상태 코드 미완료 상태