본문 바로가기
JSP

23.01.26 Get / Post 개념정의

by SoulMania 2023. 1. 27.

Get / Post 개념정의

 

참고 URL

https://hipdizzy.tistory.com/120

 

면접질문. get 과 post의 차이?

*도움이 되셨다면 광고 한번 클릭해주세요! 제게 큰 힘이됩니다! 이번 면접에 볼때 get과 post의 차이에 대해 질문을 하였다. 질문을 듣자 마자. 아차 하였고, 한번도 생각해본적없던 문제였다. 결

hipdizzy.tistory.com

GET
HTTP/1.1 스펙인 GET은 서버로부터 정보를 조회하기 위한 메소드이다.

GET은 요청할때 필요한 데이터를 Body에 담지않고, 쿼리스트링을 통해 전송한다.

예제) www.example.com/resources?name1=value1&name2=value2 

또한 GET은 불피요한 요청을 제한하기 위해 요청이 캐시될 수 있다. 가령 js,css,이미지 같은 정적 컨텐츠는 데이터 양이 크고 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없다. 그래서 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지않고 캐시된 데이터를 사용한다. 


POST
POST는 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송한다. HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있다. 그래서 POST요청은 GET과 달리 대용량 데이터를 전송할수있다. 또한 POST로 요청을 보낼땐 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야한다. 데이터 타입을 표시 하지 않으면 서버는 내용이나 URL에 포함된 리소스의 확장자명 등으로 데이터 타입을 유추합니다. 만약, 알 수 없는 경우에는 application/octet-stream으로 처리한다.

 

GET과 POST 차이

GET은 Idempotent, POST는 Non-idempotent하게 설겨되어있다.

Idempotent(멱등)은 수학이나 전산학에서 연산의 한 설징을 나타내는 것으로, 연상을 여러 번 적용하더라도 결과가 달라지지 않는 성질이다.


GET은 Idempotent(멱등)하도록 설계되었다는 것은 GET으로 서버에게 동일한 요청을 여러번 전송하더라도 동일한 응답이 돌아와야 한다는것을 의미한다. 이에 따라 GET은 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 Idempotent 하기 때문에 주로 조회를 할 때에 사용해야한다. 예를들어, 브라우저에서 웹페이지를 열여보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게 된다.

반대로 POST는 Non-dempotent하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답이 항상 다를수 있다. 

그래서 POST는 서버의 상태나 데이터를 변경시킬 때 사용된다. 게시글을 쓰면 서버 DB에 게시글이 저장되고, 게시글을 삭제하면 해당 데이터가 없어지는 등 POST로 요청을 하게 되면 서버의 무언가는 변경되도록 사용된다.

 

※현업에서 서버엔지니어로 업무할때 단순히 URL 뒤에 쿼리스트링 값에 유저가 입력한 파라미터 값이 붙어서 전송되느냐 아니냐 차이로만 이해 하고 있다가 이번 과정을 통하여 더 깊고 정확하게 이해할 수 있었다는게 개인적으로 고무적이라는 생각!!!