Contents
참고영상
https://www.youtube.com/watch?v=aCSryu_emlA&t=888s
HTTP Method(get, post)
Client에서 Server로 요청을 하고 Server에서 거기에 대한 응답을 줄 때 HTTP란 프로토콜을 활용해서 주고 받게 됨
HTTP 프로토콜이 동작할 때 Client에서 Server로 요청하는 것이 시작
요청을 할 때 요청정보 안에는 Method 정보가 있는데 Server로 요청을 할 때 어떤 목적을 가지고 요청을 하는지, 목적이 무엇인지를 표시해주는 게 get, post 이렇게 대표적으로 두가지
요즘에는 REST API 이런 이야기를 하면서 HTTP Method를 이전에는 get과 post 두 가지만 중심적으로 활용을 했는데
이제는 get, post, delete, put 등등 HTTP Method들이 여러가지가 있는데 이것들까지 활용을 해서 요청에 명확한 의미를 주자! 요즘에는 이런 개념을 가지고 사용
HTTP REQUEST METHOD
Client에서 Server로 요청 시 데이터 전달(요청) 방식
- Client : 웹브라우저
- Server : Tomcat
대표적으로 두 가지 방식이 있다
GET 방식
- 요청 URL에 데이터를 붙여서 전송(얻기)
- 요청 URL 길이에 제한이 있음
- 전송 데이터 노출에 따른 위험(비밀번호를 주소창에 붙이는 건 좋지 않음)
GET은 서버로 요청을 할 때 무언가를 얻기 위한 게 목적
서버야, 나한테 뭐 좀 줘. 내가 뭘 좀 얻어야겠어 -> 이런 요청을 하는 게 GET 방식
GET 요청 방식의 예시
- 웹브라우저에서 어떤 링크를 클릭
- 입력 상자 같은 게 있어서 뭘 입력하거나 체크 박스같은 걸 체크해서 전송
대표적으로 네이버 같은 곳에서 검색창에 뭔가를 검색하고 검색을 누르면 검색어가 URL 경로 뒤에 붙어서 서버로 요청이 보내짐
POST 방식
- HTTP body에 데이터를 담아서 전송(보내기)
- 데이터 전송 길이에 대한 제한이 없음
- HTTP REQUEST BODY에 데이터를 담으므로 노출 안 됨(보안성과는 관련없음)
목적 : 서버에 데이터를 준다
GET은 내가 이걸 줄테니까 이거에 관련된 무언가를 나에게 줘. 내가 얻기 위한 것
POST는 서버야 이것 좀 받아. 내가 이거 줄테니까 이거 가지고 뭐해! 전달하는 게 목적
HTTP 동작 방식
HTTP라는 네트워크 프로토콜이 어떤 포맷을 가지고 동작하는지 알아보자.
Request를 하든, Response를 받든 Server와 Client 간에는
HTTP header, body 이렇게 두 가지로, 가운데는 개행으로 나뉨
이렇게 나누어서 request를 할 때도 header에 요청에 관련된 것을 적어주고
POST와 같이 데이터를 보내는 것이라면 body에 보내는 데이터들을 추가해서 전송
GET으로 요청하는 것이라면 header에서 get 방식으로 요청
그리고 필요한 데이터는 서버에 전달할 때 경로 뒤에 붙여서 전달하고 body는 비어있음
서버에서 처리를 하고 나면 처리된 결과를 response로 줄 건데
response의 모양도 header, body로 나뉨
response header에는 응답 코드 (200: ok, 404: page not found) 말고 브라우저에 응답해 줄 추가적인 내용들을 포함해서 표시
response body에는 html태그 같은 text(브라우저에 보일 내용들)들이 담겨서 브라우저에 돌아옴
Header에는 요청을 할 때는 요청에 관련된 정보들이, 응답을 줄 때는 response와 관련된 응답 정보들이 들어감
body도 header와 같이 요청과 응답에 따라 다른 정보들이 들어감
GET 요청 시
전송 버튼을 누른다는 건 브라우저에서 서버로 REQUEST를 한다는 얘기
REQUEST를 할 때
HTTP REQUEST HEADER에
요청 방식, 어디로 요청하는지에 대한 정보, ?(물음표) 뒤에는 서버에 전달해주고자 하는 값이 들어감
BODY에는 따로 표시할 데이터가 없다고 뜸
POST 요청 시
POST는 전송을 누르면 HEADER 정보가 POST 방식으로 바뀌어 있고 전달하는 값이 표시되지 않음
전달하는 값은 HTTP BODY 안에 표현됨