본문 바로가기
Develop/백엔드 & 서버

GET, POST 메소드 차이점

by 구운밤이다 2021. 1. 11.
728x90
반응형

개발을 하다보면 API를 많이 접할 수 밖에 없다. FE든, BE든.. 그냥 Restful API 대충 안다고 생각하고 개발만 했었는데 백엔드 인턴 면접 때 실제로 이렇게 물어보니까 답을 할 수가 없었다😂. 이런 공부는 어떻게 해야할까. 일단 이 질문에 답해보자.

GET은 가져오는 것이고 POST는 수행하는 것이다.

즉 get은 select문과 비슷하고, post 는 데이터베이스에 뭔가 값을 저장하던가 확인할 때 사용한다. 자세한 차이는 아래 표에 비교해두었다.

  GET POST
히스토리 parameter가 URL 일부 => 브라우저 기록에 남음 parameter 브라우저에 저장 x
북마크 URL로 인코딩되므로 북마크 가능 요청 parameter가 req body 에 포함. 북마크 x
parmeter 전송 가능, URL에 2K 이하로 넣는 게 안전 querystring으로 url 뒤에 ? 뒤에 붙음. 서버에 파일 업로드 등을 포함해서 가능
form data type ASCII 문자 제한 없음
해킹 쉬움 (script kiddles) GET 보다 해킹 어려움
사용 민감한 정보 전송 시 사용하지 말 것 비밀번호 전송 등에 사용 가능
캐시 Idempotent하므로 캐시된다. 같은 요청 여러번 해도 항상 같은 응답 Not idempotent. 캐시 안됨. 같은 요청 여러번해도 다른 응답 올 수 있다.
visibility 주소창 url에 다 보임. URL에는 안보임.
encode-type application/x-www-form-urlencoded multipart/form-data, application/x-www-form-urlencoded 등..
버튼 / resubmit GET 요청 다시 실행될 때 캐시 존재. 다시 submit 안됨. 브라우저가 보통 alert를 띄움.

즉 조회할때 get을 사용하면 캐싱되고, query-string을 통해 파라미터가 전달되며, 데이터는 header에 존재하고, 데이터가 url에 보인다. 하지만 post를 사용하면 캐싱이 안되고 조회할 때마다 다른 값이 올 수 있다. 또한 body에 데이터가 담겨있고, 따라서 url에 데이터가 보이지 않는다.

728x90
반응형

댓글