Back-end/Network

HTTP 메서드. GET vs POST 방식

cheersHena 2018. 10. 16. 18:20
반응형
 

GET  vs  POST

 

 
두방식 모두 서버에 요청을 하는 메서드: 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식
클라이언트가 서버에 요청시, 필요 데이터가 있는 경우 그 정보 즉 데이터를 서버에 요청하여 요청받은 작업 수행시 사용한다. 
 
GET type : 클라이언트의 데이터를 URL뒤에 붙여서 보낸다.
e.g.) 
localhost:8080/jsp-test/bmi/output.jsp?name=홍길동&birth=19910315&...
 
localhost- URL/IP 
:8080 - WAS port number  
/jsp-test - context root 
/bmi/output.jsp - web page경로 
? - 웹페이지와 파라미터 구분. 
name - 파라미터값의name 
홍길동 - 파라미터의 값.
& - 파라미터와 파라미터 구분
 
 
POST type: POST 방식은 GET 방식과 달리, 데이터 전송을 기반으로 한 요청 메서드이다. GET방식은 URL에 데이터를 붙여서 보내는 반면, POST방식은 URL에 붙여서 보내지 않고 BODY의  FORM 에 데이터를 넣어서 보낸다.  

e.g)
localhost:8080/jsp-test/bmi/output.jsp
 
localhost- URL/IP 
:8080 - WAS port number  
/jsp-test - context root 
/bmi/output.jsp - web page경로 
(파라미터 숨김)
단, 포스트방식일때 한글깨짐. 한글은 유니코드 방식으로 전송되기때문..
해결방안: 
java단에서 파라미터 분리하기 전에 한글인코딩해준후 값 받아서 대입. (포스트방식일때.)

request.setCharacterEncoding("UTF-8");

 
두 방식의 차이점? 
GET은 가져오는 것이고 POST는 수행하는 것.

이 개념만 잘 생각하고 있으면 상황에 따라서 어느정도 선택을 할 수 있다. 
GET은 Select적인 성향을 가지고 있음. GET은 서버에서 데이터를 가져와서 보여주기만하는 용도이지 서버의 값이나 상태등을 바꾸지 않는다. (게시판의 리스트라던지 글보기 기능 등..) 
반면에 POST는 데이터를 가져와서 서버의 값이나 상태를 저장하거나 수정위해서 사용. 글쓰기를 하면 글의 내용이 디비에 저장이 되고 수정을 하면 디비값이 수정된다. 이럴 경우에 POST를 사용.
 
 
  • POST방식이 GET방식보다 보안측면에서 더 좋다?
  POST든 GET이든 보내는 데이터는 전부 클라이언트측에서 볼 수 있다. 단지 GET방식은 URL에 데이터가 표시되여 별다른 노력없이 볼 수 있어서지, 두 방식 전부 보안을 생각한다면 암호화 해야한다.
 
  • GET방식이 POST방식보다 속도가 빠르다?
    빠른건 맞다. 하지만 왜 빠른지를 알아야 하는데, 이유는 GET방식의 요청은 캐싱(한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 데이터를 저장시켜 놓는다)때문에 빠른것이다.
 
 
 
 

 

반응형