[정리] GET/POST 차이

shininghyunho·2021년 5월 27일
0

CS

목록 보기
4/8

HTTP의 메소드 중에는 크게 4가지가 있다.
GET/POST/PUT/DELETE (+PATCH : 부분만 UPDATE할때 사용)

그중 GET과 POST의 차이를 구분해보자.

GET

GET의 역할은 select 역할과 비슷하다. 단지 확인해보는것이다. 그래서 내용을 변경하거나 어떠한 변화를 주지 않는다.

GET은 파라미터 값을 url에 담는다.

예를 들어 2번째 글을 보여줘 같은 요청을 하고싶으면 다음과 같이 url을 쓰면 된다.

http://ec2-15-165-143-80.ap-northeast-2.compute.amazonaws.com/posts/2

아니면 끝에 ? 붙이고 키,벨류로 요청 파라미터를 전달할수도있다.(쿼리스트링)

GET의 장점으로는 캐시를 이용한다는것이다. GET의 요청은 대부분 정적 페이지 이므로 js,css,img 같은 정적 컨텐츠들을 캐시에 넣어두고 다음 요청때는 캐시에 있는 데이터를 사용할수있다.

GET의 특징 정리

  • GET 요청은 캐시에 저장될 수 있다
  • GET 요청은 브라우저 히스토리에 남는다
  • GET 요청은 북마크 될 수 있다
  • GET 요청은 민간함 데이터를 다룰때 사용하면 안된다
  • GET 요청은 길이 제약이 있다
  • GET 요청은 데이터를 요청할때만 사용된다

POST

POST의 역할은 변경이다. insert와 비슷한 역할을 한다.

다음과 같은 url을 post 메소드로 요청하면 2번 글이 생성된다. (내 카페는 권한이 있어야 글쓸수있음)

http://ec2-15-165-143-80.ap-northeast-2.compute.amazonaws.com/posts/2

POST는 GET과 달리 파라미터를 HTTP 메세지의 Body에 담아 전송한다. 그래서 GET보다 대용량 데이터를 전송할 수 있다. 또한 Body에 담아 전송하면 제 3자가 그 내용을 확인할수없다.(완벽한 보안은 x)

또한 헤더에 Content-Type으로 요청 데이터의 타입을 명시해줘야한다. 명시하지 않으면 application/octet-stream으로 처리한다.

POST의 특징 정리

  • POST 요청은 캐시에 저장되지 않는다
  • POST 요청은 브라우저 히스토리에 남지 않는다
  • POST 요청은 북마크 될 수 없다
  • POST 요청은 데이터 길이의 제한이 없다(request body 크기만큼)

멱등(Idempotent) 관계

수학에서 멱등은 여러번 연산하더라도 그 결과가 달라지지 않는다는 것을 의미한다.

여기서는 GET이 Idempotent이고 POST가 Non-Idepotent이다.

GET을 데이터를 변경시키지 않아 아무도 요청해도 계속 동일한 결과가 돌아오기에 조회같은 역할에 주로 사용되지만

POST는 서버에 요청할때마다 내용이 변경되어 결과가 매번 달라질 수 있다.
(PUT과 DELETE가 있지만 POST로도 그 역할이 가능은 하다. 근데 그렇게 사용되지는 않는다.)

profile
shining itself

0개의 댓글