HTTP 메시지

강아지 이름은 봄이·2024년 1월 18일
post-thumbnail

HTTP 메시지란

클라이언트와 서버가 통신하는 것을 담당하는 프로토콜을 HTTP 라고 하며 요청/응답 모델에서 주고받는 것을 HTTP 메시지라고 한다. HTTP 메시지는 요청인지, 응답인지에 따라 구조가 다르다.

1.요청 메시지의 구성

요청 메소드

요청 메소드의 종류는 총 9개로, 그 중 주요 메서드는 GET, POST, PUT, PATCH, DELETE이다.

  • GET : 리소스 조회
  • HEAD : 헤더 조회
  • POST : 데이터 추가
  • PUT/PATCH : 데이터 수정 (전부/일부)
  • DELETE : 데이터 삭제
  • OPTIONS : 사용 가능 메서드 조회
  • CONNECT : 양방향 연결 시작 (거의 사용X)
  • TRACE : 특정 데이터의 경로 조회 (거의 사용X)

GET vs POST

GET과 POST는 클라이언트의 요청의 목적을 드러내는 것으로

  • GET은 자원에 대한 조회를 요청 (서버 영향X)
  • POST는 전송하는 데이터들에 대하여 서버에 반영해야 하는 것이다. (서버 영향O)

1. 멱등성 : GET은 멱등성을 가지고 POST는 멱등성을 가지지 않는다

멱등성이란 몇 번을 서버에 요청해도 자원이 바뀌지 않는 성질을 말한다. GET은 자원의 존재 유무만 체크하고 그에 맞는 응답만을 받으면 되기 때문에 멱등성을 보장받을 수 있다. POST는 데이터를 서버에 전송해서 특정 작업을 처리하기에 서버에서의 결과가 POST 요청마다 달라질 수 있다. 그래서 멱등성을 완전히 보장한다고 할 수 없다.

2. 데이터가 어디에 실리는가?

GET은 HTTP의 헤더에 데이터가 드러나 보안에 취약하다.
POST는 HTTP 헤더가 아닌 바디에 데이터를 실어 보내기 때문에 데이터가 외적으로 드러나지 않는다.

3. 데이터의 양

GET은 서버에 자원을 위한 키워드를 보내거나 경로와 관련된 정보를 전송하면 된다.
POST는 서버에서 작업하는데 필요한 데이터들을 보내줘야 하기 때문에 상대적으로 보내야 하는 데이터가 많다.

PUT vs PATCH

멱등성 : PUT은 멱등성이 보장되고, PATCH는 멱등성이 보장되지 않는다

PUT은 지정한 데이터를 전부 수행하는 method이고, PATCH는 정보의 일부만 변경하는 method를 말한다. 그래서 PUT은 멱등하지만 PATCH는 멱등하지 않다.

2. 응답 메시지의 구성

상태코드

클라이언트가 서버에게 요청을 보낼 때 요청 결과 (응답)이 어떻게 되었는지 알려주는 코드

클라이언트에게 요청이 들어오면 서버가 요청에 대한 수행 결과를 응답 메세지를 통해 보내준다. 그런데 HTTP 통신 과정에서 클라이언트 측, 서버 측, 혹은 양쪽 모두 문제가 발생할 수 있기에 통신이 잘 이루어지고 있는지 통신 상태를 감시하는게 중요하다. 이에 상태코드가 필요한데, 상태코드란 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로 상태 코드에 따라 요청의 성공/실패 여부를 판단한다.

상태 코드의 종류에는 총 5개의 클래스가 존재한다

1XX (informational response)

[정보] 주식과 같이 실시간으로 데이터를 받아야하는 통신 응답을 말한다.

2XX (success)

[성공] 클라이언트가 요청한 작업을 서버가 성공적으로 처리했음을 의미한다.

3XX (redirection)

[리다이렉션] 요청을 완료하기 위해 재전송이 필요하다.

4XX (Client Error)

[클라이언트 오류] 클라이언트 측에 오류가 있음을 의미
4XX는 클라이언트와 관련된 것이기 때문에 세부적인 상태 코드들이 중요하다.

  • 400 : 클라이언트의 잘못된 문법으로 서버가 이해하지 못함
  • 401 : 요청을 위한 권한 인증이 필요하다는 상태 코드
  • 403 : 인증은 처리되었으나 해당 자원에 대한 인가를 거치지 않은 경우에 대한 응답
  • 404 : Not Found로 요청한 URL을 찾을 수 없는 경우

5XX (Server Error)

[서버 오류] 클라이언트의 요청은 정상적이지만 서버가 요청을 수행하지 못했음을 의미함

HTTP 헤더

데이터의 핵심 정보를 담는 역할

요청 메시지에서도, 응답 메시지에서도 헤더가 있었는데 헤더의 역할은 무엇일까? HTTP 헤더란 데이터의 핵심 정보를 담는 역할을 하며, 헤더명:헤더값 의 형식을 띈다.

HTTP 헤더의 종류에는 공통헤더, 요청헤더, 응답헤더, 엔티티헤더 총 네 개가 있다

공통헤더

  • 요청 메시지와 응답 메시지 모두 적용되는 헤더
  • 메시지가 발생한 날짜와 시각을 표현하는 Date, 기존에 받은 데이터를 저장할지 여부를 정하는 Cache-Control 등

요청헤더

  • 요청 메시지에 작성하며 클라이언트에 대한 정보 또는 변경될 데이터에 관한 내용을 포함하는 헤더
  • 데이터를 요청하는 서버의 호스트이름 (host) 또는 클라이언트의 정보 (user-agent) 등

응답헤더

  • 요청헤더와 달리 응답 메시지에 대한 정보를 담고 있는 헤더
  • 웹 서버의 종류 등

엔티티헤더

  • 메시지 본문에 대한 정보를 포함하는 헤더
  • 본문의 길이 (content-length), 자원의 미디어 타입 (content-type), 본문의 언어 (content-language) 등

😽 도움을 받은 사이트

https://hahahoho5915.tistory.com/62
https://murphymoon.tistory.com/entry/HTTP%EC%9D%98-GET%EA%B3%BC-POST-%EB%A9%94%EC%84%9C%EB%93%9C-%EB%B9%84%EA%B5%90-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B81
https://jhbljs92.tistory.com/entry/3-HTTP-Method

0개의 댓글