geeone 스터디 블로그

[컴퓨터 네트워크] 네트워크의 응용 계층 - HTTP 메서드와 상태 코드 본문

컴퓨터 네트워크

[컴퓨터 네트워크] 네트워크의 응용 계층 - HTTP 메서드와 상태 코드

alisongeeone 2024. 10. 8. 15:36
1. DNS와 URI/URL
2. HTTP의 특징과 메시지 구조
3.  HTTP 메서드와 상태 코드
4. HTTP 주요 헤더

 

3.  HTPP 메서드와 상태 코드 

HTTP 메서드

 

HTTP 메서드 설명
GET 자원을 습득하기 위한 메서드
HEAD GET과 동일하나, 헤더만을 응답받는 메서드
POST 서버로 하여금 특정 작업을 처리하게끔 하는 메서드
PUT 자원을 대체하기 위한 메서드
PATCH 자원에 대한 부분적 수정을 위한 메서드
DELETE 자원을 삭제하기 위한 메서드
CONNECT 자원에 대한 양방향 연결을 시작하는 메서드
OPTIONS 사용 가능한 메서드 등 통신 옵션을 확인하는 메서드
TRACE 자원에 대한 루프백 테스트를 수행하는 메서드

 

1. GET 메서드

  • 자원을 조회하는 용도의 메서드입니다.
  • 웹 브라우저를 통해 웹사이트의 자원을 조회하는 것 == 해당 웹사이트에 GET 요청을 보내는 것
GET /example-page HTTP/1.1
Host: www.example.com 

 

(HOST 메서드는 응답 메시지에 메시지 본문이 포함되지 않는다는 점을 제외하면 사실상 GET 메서드와 동일

 

 

2. POST 메서드

  • 서버로 하여금 특정 작업을 처리하도록 요청하는 용도로 사용되는 메서드입니다. 
  • 많은 경우, '클라이언트가 서버에 새로운 자원을 생성하고자 할 때' 사용됩니다.
POST /posting HTTP/1.1
Host : example.com
.
.
{
     "Id":1,
     "Title"  : "컴퓨터 네트워크",
.
.
}

-> 요청 메시지 (메시지 본문에 해당하는 자원을 새롭게 생성하도록 요청하는 메시지)

HTTP/1.1 201 Created
Content-Type : application/json
Content-length : 100
Location : /posting/1
{
     "Id":1,
     "Title"  : "컴퓨터 네트워크",
.
.
}


-> 응답 메시지 (성공적으로 자원이 생성되었을 때)(location 헤더를 통해 자원의 위치를 응답하고, 메시지 본문으로 생성된 자원을 응답)

 

 

3. PUT과 PATCH 메서드

  • PUT 메서드는 '덮어쓰기'를 요청하는 메서드인 반면, PATCH 메서드는 '부분적 수정'을 요청하는 메서드라는 차이가 있음으로 유의해야 합니다.

 

4. DELETE 메서드

  • 특정 자원의 삭제를 요청할 때 사용되는 메서드입니다.
DELETE /tests/a.txt HTTP/1.1
Host : example.com

-> example.com 이라는 호스트의 '/texts/a.txt'를 삭제하도록 요청하는 메시지 

 

 

메서드 선택

메서드로 요청을 받았을 때 서버가 어떻게 행동해야 하는지를 설계하는 것은 오로지 개발자의 몫!

같은 URL에 대한 요청이라고 해도 여러 메서드에 대한 동작을 구현할 수 있다.

즉, 같은 URL에 대해 GET 메서드로 요청을 받았을 때와 POST 메서드로 요청 메시지를 받았을 때를 다르게 동작하게 하거나, PATCH 메서드에 대한 동작은 구현하지 않을수도 있다~

 

 

 


HTTP 상태코드

 

상태코드란?

  • 요청의 결과를 나타내는 3자리의 정수입니다.
  • 백의 자릿수를 기준으로 요청 결과의 유형을 나누기 때문에 유사한 결과를 나타내는 상태 코드는 같은 백의 자릿수를 공유합니다.
상태 코드 설명
100번대(100~199) 정보성 상태 코드
200번대(200~299) 성공 상태 코드
300번대(300~399번) 리다이렉션 상태 코드
400번대(400~300번) 클라이언트 에러 상태 코드
500번대(500~599번) 서버 에러 상태 코드

 

1. 200번대 : 성공 상태 코드
  • 요청이 성공했음을 의미합니다.
상태 코드 이유 구문 설명
200 OK 요청이 성공했음
201  Created 요청이 성공했으며, 새로운 자원이 생성되었음
202 Accepted 요청을 잘 받았으나, 아직 요청한 작업을 끝내지 않았음
204 No Content 요청이 성공했지만, 메시지 본문으로 표시할 데이터가 없음

 

2. 300번대 : 리다이렉션 상태 코드
  • redirection : 클라이언트가 요청한 자원이 다른 곳에 있을 때 다른 곳으로 요청을 이동시키는 것
  • 클라이언트가 요청한 자원이 다른 URL에 있을 경우, 서버는 리다이렉션 관련 상태 코드와 함께 응답 메시지의 Location 헤더를 통해 요청한 자원이 위치한 URL을 안내해줄 수 있습니다. 이를 수신한 클라이언트는 Location 헤더에 명시된 URL로 재요청을 보내 새로운 URL에 대한 응답을 받게 됩니다. 
상태 코드 이유 구문 설명
301 Moved Permanently 영구적 리다이렉션 - 재요청 메서드가 변경될 수 있음
308 Permanent Redirect 영구적 리다이렉션 - 재요청 메서드가 변경되지 않음
302 Found 일시적 리다이렉션 - 재요청 메서드가 변경될 수 있음
303 See Other 일시적 리다이렉션 - 재요청 메서드가 GET으로 변경됨
307 Temporary Redirect 일시적 리다이렉션 - 재요청 메서드가 변경되지 않음
304 Not Modified 캐시 - 자원이 변경되지 않음

 

영구적 리다이렉션 permanent redirection

  • 자원이 완전히 새로운 곳으로 이동하여 경로가 영구적으로 재지정되는 것을 의미합니다.
  • 기존 URL에 요청 메시지를 보내면 항상 새로운 URL로 리다이렉트 됩니다.

 

일시적 리다이렉션 temporary redirection

  • 자원의 위치가 임시로 변경되었거나 임시로 사용할 URL이 필요한 경우에 주로 사용됩니다.
  • 어떤 URL에 대해 일시적인 리다이렉션 관련 상태 코드를 응답 받았다면 영구적인 리다이렉션과는 달리 여전히 요청을 보낸 기존의 URL을 기억해야 합니다.

 

3. 400번대 : 클라이언트 에러 상태 코드
  • 클라이언트에게 잘못이 있음을 나타내는 상태 코드입니다. 
상태 코드 이유 구문 설명
400 Bad Request 요청 메시지의 내용이나 형식 자체에 문제가 있음
401 Unauthorized 요청한 자원에 대한 유효한 인증authenication이 없음
403 Forbidden 요청이 서버에 의해 거부됨 (예) 자원에 대한 접근 권한authorization 이 충분하지 않음
404 Not Found 요청 받은 자원을 찾을 수 없음
405 Method Not Allowed 요청한 메서드를 지원하지 않음

 

401과 403 혼동 주의!

  • 인증 : 자신이 누구인지를 증명하는 작업
  • 접근 권한 : 인증된 주체에게 허용된 작업

-> 로그인된 모든 유저는 인증된 유저이지만 모든 유저가 관리자 페이지(권한)에 들어갈 수는없음. 

 

 

4. 500번대 상태 코드 
  • '서버에 잘못이 있음'을 나타내는 상태 코드입니다.
상태 코드 이유 구문 설명
500 Internal Server Error 요청을 처리할 수 없음
502 Bad Gateway 중간 서버(클라이언트와 서버 사이에 위치)의 통신 오류
505 - HTTP Version is Not Supported

 

  • 사실 500번대 상태 코드의 대부분은 500번입니다. 왜냐하면, 서버에 어떤 문제가 발생했을 때 익명의 다수 사용자에게 문제의 발생 원인을 상세히 공개하는 것은 보안상 좋지 않기 때문에, 500번으로 통칭하는 경우가 많습니다.