iBetter Books
수정

메서드, 상태코드, 헤더

HTTP 요청-응답의 문법을 더 자세히 들여다봅니다. 메서드는 클라이언트가 서버에 무엇을 원하는지 나타내는 동사입니다. 상태 코드는 서버가 요청을 어떻게 처리했는지 알려주는 숫자입니다. 헤더는 요청과 응답에 메타정보를 담는 칸입니다.

주요 HTTP 메서드

GET은 리소스를 요청합니다. 브라우저에서 주소를 입력하면 거의 항상 GET입니다. 서버 데이터를 변경하지 않습니다.

POST는 서버에 데이터를 제출합니다. 회원가입, 댓글 작성, 파일 업로드가 대표적입니다. 본문(body)에 데이터를 담아 보냅니다.

PUT은 리소스를 생성하거나 덮어씁니다. PATCH는 일부만 수정합니다.

DELETE는 리소스를 삭제합니다.

REST API 설계에서 이 메서드들은 각각의 의미에 맞게 사용하는 것이 관례입니다. 모든 요청을 POST로만 처리하는 설계는 HTTP의 의도를 무시하는 것입니다.

상태 코드의 분류

상태 코드는 세 자리 숫자입니다. 첫 자리가 분류를 나타냅니다.

1xx는 정보 응답입니다. 요청을 받았고 처리 중임을 알립니다.

2xx는 성공입니다. 200 OK가 가장 흔합니다. 201 Created는 새 리소스가 생성되었을 때입니다.

3xx는 리다이렉션입니다. 301 Moved Permanently는 리소스가 영구적으로 이동했다는 뜻입니다. 302 Found는 임시 이동입니다.

4xx는 클라이언트 오류입니다. 400 Bad Request는 요청 형식이 잘못된 경우입니다. 401 Unauthorized는 인증이 필요합니다. 403 Forbidden은 접근 권한이 없습니다. 404 Not Found는 리소스를 찾을 수 없습니다.

5xx는 서버 오류입니다. 500 Internal Server Error는 서버 내부에서 문제가 발생했을 때입니다. 503 Service Unavailable은 서버가 과부하 상태입니다.

주요 헤더

요청과 응답 모두 헤더를 가집니다. 자주 보이는 것들을 정리합니다.

Host는 요청 헤더입니다. 서버 도메인을 지정합니다. HTTP/1.1에서는 필수입니다. 하나의 서버가 여러 도메인을 처리할 때 이 헤더로 구분합니다.

Content-Type은 본문의 데이터 형식을 나타냅니다. text/html, application/json, multipart/form-data 등이 있습니다.

Content-Length는 본문의 바이트 크기입니다.

Authorization은 인증 정보를 담습니다. Bearer {토큰} 형태를 자주 볼 수 있습니다.

Cache-Control은 캐싱 동작을 지시합니다. no-cache, max-age=3600 같은 값을 사용합니다.

Set-Cookie는 서버가 클라이언트에게 쿠키를 설정할 때 사용합니다. Cookie는 클라이언트가 저장된 쿠키를 서버로 보낼 때 사용합니다.

헤더는 표준 헤더 외에도 사용자 정의 헤더를 추가할 수 있습니다. 관례적으로 사용자 정의 헤더는 X-로 시작했지만, 이 관행은 RFC 6648에서 공식 폐기되었습니다.

다음 절에서는 HTTP가 버전을 거듭하며 어떻게 발전해 왔는지, 그리고 오늘날 HTTP/3가 왜 TCP를 버리고 UDP를 선택했는지를 살펴봅니다.