웹 개발

get, post의 차이

KairoYang 2019. 12. 25. 20:04

get 과 post 방식을 알기 위해서는 HTTP프로토콜을 알아야한다.

 

HTTP란?

 웹에서는 위의 사진과 같이 클라이언트와 서버간에 요청/응답으로 데이터를 주고 받는 프로토콜이다.

클라이언트가 서버에 요청을 하면 서버는 클라이언트에게 응답을 전송해야한다.

HTTP 요청에 포함되는 HTTP메소드는 서버가 요청을 수행하기위해 해야할 행동을 표시하는 용도로 사용한다. 이 요청 부분에 GET과 POST를 사용한다.

 

 

GET이란?

-서버에서 어떤 데이터를 가져와서 보여주는 용도이다. (ex 게시판의 리스트 보기)

-동일한 연산을 여러 번 수행하더라도 동일한 응답이 돌아와야 한다.(조회하는 용도로 사용한다)

-한번의 데이터 요청시 전송 데이터 양은 주소값+파라미터(url)로 255자로 제한된다.

 

get은 요청을 전송할 때 필요한 데이터를 쿼리스트링으로 보낸다.

url의 끝에 ?와 함께 이름(name)과 값(value)으로 이루는 요청 파라미터를 쿼리 스트링이라고 한다.

요청 파라미터가 여러개이면 &로 연결한다.

ex)

www.Kairoyang.com/resource?name1=value1&name2=value2  

 

get은 불필요한 요청을 제한하기 위해 요청이 캐쉬 될 수 있다. image,css,js 와 같은 정적 컨텐츠는 데이터의 양이 크고, 변경될 일이 적기 때문에 반복해서 동일한 요청을 할 필요가 없다. 그렇기 때문에 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 캐시된 데이터를 사용한다. 웹개발을 하다가 css를 자주 변경하면 정확한 코드를 작성하였지만 웹에서 새로고침을 하여도 변경된 코드가 적용되지 않을 때가 있다. 이럴때 캐시를 지운다음 새로고침을 하면 적용 코드가 적용된 것을 확인 할 수있다.  

 

 

POST란?

-post는 서버의 값이나 상태를 바꾸기 위해서 사용한다.(글을 작성하면 글의 내용이 db에 저장된다.)

-body안에서 전달하거나 수행하는 것이다.

-서버에 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다.

 

post는 리소스를 생성/변경하기 위해 설계된 메소드이다. post는 body에 담아 길이의 제한이 없기 때문에 대용량 데이터를 전송 할 수 있다. post는 url에 데이터가 보이지 않기 때문에 안전 하다고 생각할 수 있지만 크롬 개발자도구를 이용하면 요청 내용을 확인 할 수 있다. 그렇기 때문에 중요한 데이터는 암호화를 하여야 한다.