Get과 Post
GET 방식
- 먼저 GET 방식에 대해서 알아보도록 하자.
영어 Get이라는 단어는 가져오다라는 뜻을 가진 단어인데, 이를 활용해서 이해하면 쉽다.
우리가 필요한 정보를 얻기 위해 도서관에서 책을 빌려 가져오는(GET)상황과 유사하게 GET은 어떠한 정보를 가져와서 조회하기 위해서 사용되는 방식이다.
GET방식의 특징
- URL에 변수(데이터)를 포함시켜 요청한다.
- 데이터를 Header(헤더)에 포함하여 전송한다.
- URL에 데이터가 노출되어 보안에 취약하다.
- 캐싱할 수 있다.
- POST 방식보다 상대적으로 전송 속도가 빠름
- 전송하는 데이터양에 한계가 있음 (브라우저마다 GET 요청 길이 제한 존재)
- 브라우저 히스토리에 기록이 남음
POST 방식
- POST방식에 대해서 알아보도록 하자
POST라는 단어는 부치다, 제출하다라는 뜻을
예를 들어 우리가 어디에 서류를 제출하는 것은 우리에 대한 정보를 제출하여(POST) 추가하기 위함
이러한 상황과 유사하게 POST 방식은 데이터를 서버로 제출하여 추가 또는 수정하기 위해서 사용하는 방식.
POST 방식의 특징
- URL에 변수(데이터)를 노출하지 않고 요청한다.
- 데이터를 Body(바디)에 포함시킨다.
- URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.
- URL에 데이터가 노출되지 않으므로 캐싱 불가
- 클라이언트에서 인코딩, 서버에서 디코딩
- 요청 헤더의 Content-Type에 콘텐츠 타입을 명시
- 데이터들을 Body에 담기 때문에 서버로 보내는 데이터의 양은 제한 없음
- 요청받는 시간제한 존재
- 브라우저 히스토리에 기록이 남지 않음
GET과 POST 비교
GET 방식
- 중요 개념 : GET은 '가져오는 것'
- DB로 따지면 GET은 SELECT에 가깝다.
- ex) 데이터를 가져와서 봄. (게시판의 리스트, 글보기 등)
- GET 요청은 멱등이다.
POST 방식
- 중요 개념 : POST는 '수행하는 것'
- DB로 따지면 POST는 CREATE에 가깝다.
- ex) 서버의 값이나 상태를 바꿈. (게시판의 글쓰기, 수정)
- POST는 멱등이 아니다.
멱등이란?
멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같을 것이고, 반대로 POST는 리소스를 새로 생성하거나 업데이트할 때 사용되기 때문에 멱등이 아니라고 볼 수 있습니다.
'Spring' 카테고리의 다른 글
마크업(MarkUp)언어 (0) | 2022.04.24 |
---|---|
DTO, DAO, VO (0) | 2022.04.24 |
파일 업로드 이해하기 (0) | 2022.04.24 |
비동기통신과 동기통신 (0) | 2022.04.24 |
Ajax와 xmlhttprequest (0) | 2022.04.24 |