[Http] req.GET vs req.POST

고준영·2021년 8월 24일
0
post-thumbnail

1. HTTP

1) Start Line

http method, 목표 url, http -v 등이 들어감
ex) GET /login HTTP/1.1

2) Header

해당 req에 대한 메타데이터를 담고있음
메타데이터는 dict(key:value) 형태로 되어있음
ex) Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분이다.
Headers: {
Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
(ex. www.apple.co.kr)
User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, explorer)
Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
Content-Length: body 내용의 길이
Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
}

3) Body

요청의 실제 내용을 담고 있음
body를 사용하는 method는 POST이다.
ex) 로그인 시에 서버에 보낼 요청의 내용
Body: {
"user_email": "jun.choi@gmail.com"
"user_password": "wecode"
}

2. req.GET vs req.POST

Restful Api 에서는
GET은 단순히 데이터를 읽어올 때
POST는 사용자에 의한 입력값을 전송할 때 많이 사용된다.

GET 요청에 파라미터를 전달하는 방식은 url에 합쳐서 전송하며
ex) /serach ?name="jayko"&age="27"
POST 요청은 파라미터가 아닌 body값에 데이터를 담아서 전송한다.

3. req.GET body?!?!

어제 로그인 로직을 구현하는 와중에
로그인에 대한 요청을 GET방식으로 body에 데이터를 포함하여 전송하는 방식으로 구상한 로직을 보고나서 이건 안될것이다.
왜냐하면 GET요청은 body값이 없는데..? 라고 생각했으나
내가 생각한것 과는 다르게 로직이 정확하게 굴러가고, 응답 또한 정확하게 받을 수 있었다.
너무 궁금한 나머지 같은 로직을 GET, POST 두가지의 방식으로 요청을 하고, 해당 packet을 캡쳐해서 보았더니
GET에도 body가 있는것을 확인 할 수 있었다.
GET에 body가 있다니...??...??
너무나도 내가 알고있던 지식과는 다르기에 구글링과, 지인찬스로 확인한 결과 모든 req에는 body가 없더라도 default값으로 body가 조금 할당이 되고, 이 body에 데이터가 실려서 간 것 같다는 답변을 받았다.

하지만!! 이러한 방식은 GET요청을 GET요청의 방식으로 사용 한 것이 아니라 GETPOST처럼 사용 한 것이다.

GET Method는 데이터를 포함하여 통신할 때 url 뒤에 파라미터로 전달 해야하며,
body를 사용하는것은 POSTMethod 이다!!

profile
코드짜는귤🍊 풀스택을 지향하는 주니어 개발자 입니다🧡

0개의 댓글