notion-0052

01. HTTP의 GET과 POST 비교

01-1. 공통점

  • HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식

Untitled




02. GET

  • 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드
  • 예시 ) 게시판의 게시물을 조회할 때 쓰인다.
  • URL 주소 끝에 파라미터로 포함되어 전송 (Query String)
  • URL 끝에 “?”를 붙이고 변수명1=값1&변수명2=값2... 형식으로 이어 붙인다.
  • 예시) www.example.com/boardList?name1=value1&name2=value2 name1과 name2라는 파라미터 명으로 각각 value1과 value2 파라미터 값을 전달받을 수 있다.

02-1. GET 특징

  • 캐시가 가능하다
    HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.
    POST 방식으로 요청해야 할 것을 보내는데 GET 방식을 사용할 경우, 기존에 캐싱되었던 데이터가 응답될 가능성이 존재한다.
  • 브라우저 히스토리에 남는다.
  • 길이 제한이 있다. 브라우저마다 길이 제한이 다르다.
  • GET 요청은 중요한 정보를 다루면 안된다. GET 요청은 파라미터에 다 노출되어 보안에서 취약하다.
  • 데이터를 요청할때만 사용한다.

캐싱이란? 한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것




03. POST

  • 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메서드
  • 예시) 게시판에 게시글을 작성하는 작업 등
  • 전송할 데이터를 HTTP 메세지 body 부분에 담아서 서버로 보낸다. GET에서 URL 의 파라미터로 보냈던 name1=value1&name2=value2가 body에 담겨 보내진다.

Untitled 1

  • 용량이 큰 데이터를 보낼 때 사용하거나, 데이터를 암호화하여 보안이 필요한 부분에서 많이 사용한다.
  • HTML form을 통해 서버로 전송된다.
  • 예시) http://example.com/login
  • 요청 헤더에 Content-Type에 요청 데이터 타입을 표시해야 한다. 표시하지 않을 시, 서버는 내용이나 URL에 포함된 확장자명 등으로 데이터 타입을 유추한다. 알 수 없는 경우에는 application/octet-stream 으로 요청을 처리한다.

application/octet-stream
8비트 단위의 binary data라는 뜻 특별히 표현할 수 있는 프로그램이 존재하는 데이터의 경우 기본값으로 사용한다. 다른 데이터 타입의 경우, text, multipart, audio, video 등이 있다.

03-1. POST 특징

  • 캐시되지 않는다.
  • 브라우저 히스토리에 남지 않는다.
  • 북마크되지 않는다.
  • 데이터 길이에 제한이 없다.



04. 차이점

  • 사용 목적 GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트 할 때 사용한다. DB로 따지면 GET은 SELECT에 가깝고, POST는 Create에 가깝다.
  • 요청에 body 유무 GET은 URL 파라미터에 요청하는 데이터를 담아 보내므로 HTTP 메세지에 body가 없다. POST는 body에 데이터를 담아 보내기 때문에 HTTP 메세지에 body가 존재한다.
  • 멱등성(Idempotent) GET 요청은 멱등, POST 요청은 멱등이 아니다.

04-1. 멱등성

  • 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
  • GET은 리소스를 ‘조회’하므로 여러번 요청하더라도 결과가 같다 → 멱등
  • POST는 리소스를 새로 생성하거나 업데이트 할 때 사용된다. → 멱등이 아니다.
    POST 요청이 발생하면 서버가 변경될 수 있다.

Untitled 2

카테고리: ,

업데이트:

댓글남기기