GET / POST
GET, POST메서드 란 ?
- http 프로토콜이 제공해주는 7가지 메서드들 중, 웹서비스 개발에 주로 사용하는 메서드
- 사용자가 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 웹페이지가 나온다. 사용자는 웹페이지를 보기위해 단순한 일을 한 것 이지만, 특정 웹페이지를 사용자 웹브라우저에 보여주기 위해서는 내부적인 처리들이 있다.
- 요청 : 클라이언트가 서버에게 웹페이지를 보여달라고 말하는 것.
- 응답 : 서버가 클라이언트에게 요청받은 것에 대한 대답으로, 웹페이지 내용을 표현하기 위해 html문서로 주는 것.
HTTP 패킷
- 클라이언트가 서버로 요청을 했을때, 보내는 데이터를 HTTP 패킷이라 표현한다.
- HTTP 프로토콜을 쓰므로, 앞에 HTTP가 붙고 인터넷을 통해 보내는 데이터를 패킷이라 표현하므로, HTTP패킷 이라 부른다.
- HTTP패킷의 구조는 크게 헤더와 바디로 나뉘어진다.
GET방식 / POST방식
- 서버에 요청을 하는 메서드이다.
클라이언트가 서버에 요청을 할 때, 제공해야 하는 자원이 있다고 가정해 보면
예를 들어, 로그인을 하는 경우 아이디와 패스워드는 클라이언트가 작성한 후, 그 정보를 서버에 요청하여 클라이언트가 작성한 아이디와 패스워드가 올바른 것인지 검사를 해야한다. 이처럼 요청에는 자원을 보내야 하는 경우가 존재한다.
GET방식으로 데이터 보내기
- 클라이언트의 데이터를 URL뒤에 붙여서 보낸다. 위에서 쓴 예시처럼 아이디와 패스워드를 보낸다고 하면,
www.example.com?id=mommoo&pass=1234 이런식으로 보낸다. URl 뒤에 “?” 를 통해 URL의 끝을 알리면서, 데이터 표현의 시작점을 알린다.- 데이터는 key와 value쌍으로 넣어야 한다.
- 위 예시를 보면 key는 id랑 pass고, value는 mommoo랑 1234가 되겠다.
- 중간에 “&” 는 구분자로 2개 이상의 데이터를 보낼때 사용한다.
- URL형태로 표현되므로, 특정 페이지를 다른사람에게 접속하게 할 수 있다.
- 간한한 데이터를 넣도록 설계되어, 데이터를 보내는 양의 한계가 있다.
POST방식으로 데이터 보내기
- POST 방식은 GET 방식과 달리, 데이터 전송을 기반으로 한 요청 메서드이다.
- POST 방식은 URL에 붙여서 보내지 않고, BODY에다가 데이터를 넣어서 보낸다. 헤더 필드 중 BODY의 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고, 어떤 데이터 타입인지 명시한다.
- 컨텐츠 타입 몇 가지
- application / x-www-form-urlencoded
- 컨텐츠 타입을 별도로 작성하지 않는 경우에는 application / x-www-form-urlencoded 타입으로 셋팅된다.
- GET방식과 마찬가지로 BODY에 key와 value 쌍으로 데이터를 넣는다. 구분자도 동일하게 &를 쓴다.
- text / plain
- BODY에 단순 txt를 넣는다.
- multipart / form-data
- 파일전송을 할때 많이 쓰는데, BODY의 데이터를 바이너리 데이터로 넣는다는걸 알려준다.
- application / x-www-form-urlencoded
- Java와 같이 OOP프로그래밍에서는 BODY에 데이터를 InputStream/OutputStream 클래스를 통해서 읽고/쓰고 한다.
출처 : 개발자로 홀로 서기 블로그