클라이언트가 서버로 요청을 보냈을 때, 서버가 보내는 데이터를 http 패킷이라 함.
http 패킷의 구조는 헤더 / 바디로 나뉜다.
두 방식 모두 서버에 요청을 보내는 메서드이다.
클라이언트는 로그인 시 아이디와 패스워드를 입력하면 클라이언트는 해당 입력정보가 유효한지 검사가 필요하다. 이 과정에서 클라이언트는 요청을 할 때 자원을 보내야 한다.
www.velog.com?id=dhleeone&pass=1234!
위 예시 url을 보면 ?마크를 통해 url의 끝을 알리고, 데이터 표현의 시작을 알린다.
데이터는 key와 value 쌍으로 넣어야하며, 위처럼 2개 이상의 쌍은 &으로 구분한다.
데이터를 url에 붙이게 되어 http 패킷의 헤더에 포함되어 서버의 요청이되고,
body는 내용이 없이 빈 상태로 보내진다.
따라서 body의 데이터를 설명하는 Content-type은 헤더 필드에 따로 들어가지 않는다.
추가적으로 url형태로 표현되어 특정 페이지를 타인이 접속 가능하다,
간단한 데이터만 넣도록 되어있어 데이터 양에 한계가 있다.
application/x-www-form-urlencoded
text/plain
multipart/form-data
post 방식은 get 방식과 달리, 데이터 전송을 기반으로 한 요청 메소드이다.
get 방식은 url에 데이터가 붙는 반면, post 방식은 url에 붙지 않고
body에 데이터를 붙여서 보낸다.
따라서 헤더필드중 body 데이터를 설명하는 Content-type이라는 헤더필드가 들어가며 어떤 데이터 타입인지 명시한다.
1번의 컨텐츠 타입은, GET방식과 마찬가지로 BODY에 key 와 value 쌍으로 데이터를 넣는다. 똑같이 구분자 &를 쓴다.
2번의 컨텐츠 타입은, BODY에 단순 txt를 넣는다.
3번의 컨텐츠 타입은, 파일전송을 할때 많이 쓰는데 BODY의 데이터를 바이너리 데이터로 넣는다는걸 알려준다.
자바와 같이 oop 프로그래밍에서는 BODY에 데이터를 InputStream/OutputStream 클래스를 통해서 읽고/쓰고 한다.
출처: https://mommoo.tistory.com/60 [개발자로 홀로 서기]