WEB | Get과 Post의 차이

바다·2023년 5월 31일
0

WEB

목록 보기
5/12
post-thumbnail

Get & Post

클라이언트가 서버로 요청을 보내는 방법인 Http Method 중 가장 많이 쓰이는 방식 2개

1. Get 방식

Get - '가져오다' 라는 뜻
어떠한 정보를 가져와서 조회하기 위해서 사용되는 방식

Get의 데이터 전송 방식

  • 요청을 전송할 때 데이터를 Body에 담지 않고, 쿼리 스트링을 통해 전송한다.
  • URL 주소 끝에 파라미터로 포함되어 값이 전송, 이 부분을 쿼리 스트링(query string)이라고 부른다.
  • URL 끝에 "?"를 붙이고 그 다음 변수명1=값1&변수명2=값2 형식으로 이어서 붙이면 된다.

Get 방식의 특징

  • URL에 변수(데이터)를 포함시켜 요청한다.
  • 데이터를 Header(헤더)에 포함하여 전송한다.
  • URL에 데이터가 노출되어 보안에 취약하다.
  • 따라서, 중요한 정보를 다루면 안 된다.
  • 캐싱할 수 있다. (불필요한 요청을 제한하기 위해)
  • 브라우저 기록이 남는다.
  • 북마크가 될 수 있다.
  • 길이 제한이 있다.
  • 데이터를 요청할 때만 사용된다.
  • 대용량 데이터 전송 불가
  • idempotent 하다

캐싱 : 한 번 접근 후, 또 다시 접근할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장해 두는 것

2. Post 방식

Post - 부치다, 제출하다
데이터를 서버로 제출하여 추가 또는 수정하기 위해서 사용하는 방식

Post의 데이터 전송 방식

  • 요청을 전송할 대 Body에 데이터를 넣어서 전송한다.(Body의 타입은 Content-type 헤더에 따라 결정된다)
  • 데이터의 전송 내용이 눈에 보이지 않는다.
  • 보통 HTML form을 통해 서버로 전송된다.

Post 방식의 특징

  • URL에 변수(데이터)를 노출하지 않고 요청한다.
  • 데이터를 Body에 포함시킨다
  • URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.
  • 캐싱할 수 없다.
  • 브라우저 히스토리에 남지 않는다.
  • 북마크 되지 않는다.
  • 전송하는 데이터 길이에 제한이 없다.
  • idempotent 하지 않다.

3. Get과 Post의 차이점

- 사용 목적
Get은 서버의 리소스에서 데이터를 요청할 때, Post는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용 (DB로 따지면, Get은 Select에 가깝고, Post는 Create에 가깝다)

Get - 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 "조회"를 하는 행위에 사용
Post - 서버의 상태를 변화시킬 때 사용 (예 : 게시글 쓰기, 삭제하기 등)

- 요청에 Body 유무
Get은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 Body가 없다. Post는 Body에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 Body가 존재한다.

- 멱등성
Get 요청은 멱등이며, Post 요청은 멱등이 아니다.
Get 요청은 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 함
Post 요청은 서버에게 동일한 요청을 여러 번 전송하면 응답은 항상 다를 수 있음

Idempotent : 멱등법칙, 멱등성 | 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질

- 표로 정리하기
출처 : https://whales.tistory.com/120

- URL 예시
Get : http://localhost:8080/Boardlist?name=바다&contetns=바다는비에젖지않는다
Post : http://localhost:8080/addBoard

profile
ᴘʜɪʟɪᴘᴘɪᴀɴs 3:14

0개의 댓글