티스토리 뷰
Web - Get과 Post의 차이
|들어가기에 앞서,
웹을 개발하면서, 서버에 요청을 보낼때 get, post 라는 단어들에 대해 궁금증이 생기실겁니다. 웹에 대해 경험이 있으신분들은 이미 알고있는 개념이겠지만, 저도 그랬듯이 처음 웹개발을 시작할때, 어떨때는 요청을 get으로 보내주기도하고, post로 보내주기도 하는데 그 이유가 뭐지? 차이가뭐지?라는 의문이 많이 들었고, get하나만 쓰면되지 왜 post도 써야 하지?라는 생각도 들었었습니다. 이러한 궁금증이 생기는 분들을 위해 간단하게 설명해드리겠습니다.
|GET과 POST를 사용하는 이유
- get과 post 방식의 request는 서버로 본인이 가지고 있는 data를 전달하기 위해 사용을 합니다.
- data를 전달한다라는 본질적인 기능적 측면에서는 똑같다고 볼수 있죠!
그런데 왜? get과 post를 구별해서 사용하나요?
세부적으로 보안과, 전달형식, 전달할 수 있는 data의양에 따라 차이점이 발생하게 됩니다.
아래에서 각각의 특징으로 두가지 방식의 차이를 살펴봅시다.
|GET
아래 자료는 멋쟁이사자처럼 강의자료를 참고하였습니다.
간단히 설명하여 드리면, 위에서 볼수 있듯이, 입력한정보가 url에 노출되고, 정보를 보여줘도 상관없는 기능을 수행할때 get 메소드를 수행하게 됩니다.
(ex 검색,조회)
형식을 살펴보면, query의 이름과 값이 결합된 형태인것을 확인해 볼 수 있습니다.
?post_title=멋쟁이사자처럼&post_content=crud+강의
- GET 메소드의 특징을 더 자세히 살펴보면,
1. 한번의 데이터 요청시,전송 데이터의 양은 주소값+파라미터로 255자로 제한이 된다.
2.저장된 data를 단순히 요청할때 사용한다.
3.URL에 그대로 query의 이름과 값이 같이 연결되어 표현된다.
ex)http://사이트주소/블라블라?name=홍길동
위와 같습니다.
Query?
쿼리는 웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청(주로 문자열을 기반으로 한 요청이다)에 의한 처리를 말합니다.
|POST
- post 역시도 간단히 설명하면, 입력한정보를 숨겨서(정보를 보여주면 안될때) 로그인 상황이나, 중요한 데이터를 보내는 상황에서 post메소드를 수행하게 됩니다.(사실 대부분의 웹서비스에서 데이터를 작성하거나 수정해서 요청하는 기능을 수행할때때는 post를 씁니다 ㅎㅎ..)
형식을 살펴보면, query의 이름과 값이 결합된 형태가 사라진것을 확인해 볼 수 있습니다.
get에서는 쿼리라는것으로 주소창을 통해 데이터를 보내줬는데, post메서드 에서는 그럼 데이터를 어떻게 보내는거지? 하고 의문이 들수 있습니다.
이를 알려드리기 위해 잠깐 패킷이라는 개념에 대해서 설명 드리겠습니다.
HTTP 패킷?
웹에서 get과 post 방식으로 서버로 요청을 했을때, 보내는 데이터를 HTTP 패킷이라 표현한다.
HTTP 프로토콜을 쓰므로, 앞에 HTTP가 붙고 인터넷을 통해 보내는 데이터를 패킷이라 표현하므로,
HTTP패킷 이라 부른다. HTTP패킷의 구조는 크게 헤더 와 바디로 나뉘어진다.
get 방식에서는 앞에서 말한 패킷의 헤더에 www.example.com?id=mommoo&pass=1234 과 같은 형식으로 url을 통해 데이터를 보냈었다면, post 방식은 패킷의 바디라고 불리는 것 안에(웹 사용자는 볼수 없습니다.) 데이터를 담아서 보내게 됩니다. 따라서, url상에 보이지 않아도 데이터를 전송할 수 있었던 것이었습니다. (뭐라는거야 할수도 있는데,ㅎㅎ.. 느낌만 가져갑시다 하핳)
이정도만 알고 갑시당! ㅎㅎ.. http 패킷에 관해서는 시간나실때, 검색해 보시는것을 추천합니당
POST 메소드의 특징을 더 자세히 살펴보면,
1.요청시 데이터양의 제한이 없습니다.
2.url상에 나타나지 않아 보안상 좋습니다.
위와 같은 특징 때문에 get 방식은 데이터의 양은 한계가 있고, 사용자들에게 쉽게 정보를 노출하기 때문에 post 방식으로 데이터를 보내게 되는것입니다.
|어디서 GET과 POST를 사용해야 하나요?
결론: GET은 가져온다는 개념이고, POST는 수행한다는 개념으로 받아들이면 쉽습니다.
즉, get은 서버에서 어떤 데이터를 가져와서 보여줄때 사용합니다. 어떤 값이나 내용, 상태등을 바꾸지 않는 경우에 사용을 하는것입니다.예를들면 게시판에서 글의 내용에 대한 목록을 보여주는 경우나, 글의 내용을 보는 경우입니다.
ex) 글목록 조회, 각각의 글조회
이에비해, post는 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용합니다.
글쓰기를 예를들면 글의 내용을 저장하고, 수정할때에 post를 사용하는 것이죠.
ex)글쓰기, 글수정
|마치며
- 개발을 처음 시작하시거나, 웹개발이 처음이시거나, 포스팅 글을 읽는것 만으로는 사실 감이 안잡힐수 있으실텐데, 어찌보면 당연한 것입니다 ㅠ3ㅠ 그러니 안심하시공 ㅎㅎ
- 하지만, 웹개발에 있어서 GET과 POST라는 개념은 정말 중요한 것이기 때문에 꼭 숙지하시고, 웹을 개발하시면서, 여러 기능을 구현하다보면 구현한내용과 위에 포스팅한 내용들과 비교해보시면, 점점 감이 잡히실 것입니다!
'Computer Engineering > Web' 카테고리의 다른 글
Web -DOM과 querySelector (0) | 2018.07.03 |
---|---|
Web - 도메인관리시스템에 대한 이해 (0) | 2018.06.14 |
Web - HTTP 프로토콜의 이해 (0) | 2018.04.28 |
Web- Nginx (0) | 2018.03.29 |
Web - CORS (0) | 2018.03.22 |