HTTP 메세지: 요청(request)과 응답(response)

Hyebin·2021년 5월 11일
0

HTTP

목록 보기
4/4
post-thumbnail

HTTP 메세지는 서버와 클라이언트 간에 데이터를 주고받는 방식이다.

HTTP/1.1의 경우 요청과 응답은 Start/Status line, Header, Body로 이루어져 있다.

HTTP 요청

요청은 클라이언트가 서버로 특정 데이터를 받아올 수 있게끔 보내는 메세지이다.

요청 메세지는 아래와 같이 구성되어 있다.

  • 메서드 : 클라이언트가 서버에 요청할 동작
  • 프로토콜 : 사용되는 프로토콜과 버전
  • 헤더 : 클라이언트 자체에 대한 자세한 정보
  • empty-line : 헤더와 본문을 구별함
  • 본문 : 해당 요청 전송하는 메세지(데이터)
    보통 GET 메서드로 요청을 보내는 경우 body는 생략된다.

HTTP 요청 메서드

1) GET

특정 리소스를 가져오도록 요청하는 메서드이다. GET 요청은 데이터를 가져올 때만 사용한다.
CRUD의 개념으로 생각하면 Read에 속한다.

URL 뒤에 데이터를 붙여 보낸다.

www.example.com/upper

2) POST

서버로 리소스를 제출하는 메서드로 서버 상태의 변화를 일으킨다. 주로 새로운 리소스 생성(create) 할 때 사용된다.

URL에 붙여 쓰는 방식이 아닌 BODY에다 리소스를 넣어서 보낸다.

3) PUT

POST와 비슷하지만 연속적인 요청시에도 같은 효과를 가져온다. 기존 데이터를 교체하는 용도로 쓰인다.(update)

3) PATCH

리소스의 부분적인 수정(update)을 할 때에 사용된다.

4) DELETE

지정한 리소스를 삭제(delete) 요청할 때 사용한다.

5) OPTIONS

CORS에서 OPTIONS 메소드로 사전 요청을 보내 서버가 해당 parameters를 포함한 요청을 보내도 되는지에 대한 응답을 줄 수 있게 한다.

멱등성(idempotent)

mdn에 따르면 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일한 것을 멱등성을 가진다고 말한다.

예를 들어, DELETE로 서버의 유저1 정보를 지우는 요청을 보낸다고 하면, 처음 요청을 보냈을 때 유저1 정보가 삭제된다. 서버에서는 이미 유저1의 정보가 삭제되었기 때문에 유저1 삭제 요청을 또 보낸다고 아무런 영향을 끼치지 않는다.

GET, HEAD, PUT, DELETE 메서드는 멱등성을 가지는 메서드이다. POST는 멱등성의 특징을 가지지 않는다.

HTTP 응답

요청에 대한 서버의 답변이다.

  • 프로토콜 : 사용되는 프로토콜과 버전
  • 상태코드 : 요청에 대한 응답 상태
  • 상태메세지 : 상태코드와 함께 전달되는 메세지

상태코드(state code)

http 응답 상태코드는 요청에 대한 응답이 성공적으로 되었는지 알려준다.

자주 쓰이는 200, 400, 500번대는 자주 봐서 익혀두면 코드짤 때 편하다.

Content-Type

응답 헤더 안에 있는 Content-Type은 클라이언트한테 전달되는 데이터 유형을 알려준다.
Content-Type은 MIME 타입으로 표기된다.

📌 MIME(Multipurpose Internet Mail Extension) 타입이란?
클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다. 웹에서 파일의 확장자는 별 의미가 없습니다. 그러므로, 각 문서와 함께 올바른 MIME 타입을 전송하도록, 서버가 정확히 설정하는 것이 중요합니다. 브라우저들은 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해 대게 MIME 타입을 사용합니다.
출처:MDN

Content-Type에 쓰이는 대표적인 MIME 타입들

  • text/plain
  • text/html
  • text/css
  • text/javascript
  • application/json
  • application/xml
  • image/gif(이 외 이미지 파일 형식)
  • video/webm
  • audio/midi

0개의 댓글