이건 꼭 언급해주세요
•
GET은 URL 노출 O , POST는 URL 노출 X
•
GET은 가져오는 것
◦
Select적 성격 == 조회
◦
왜 인가요? = 인터넷에서 본 물건을 친구에게 보여줄 때(get방식) URL로 보내기 때문이에요.
•
POST는 수행하는 것
◦
DML적 성격 == 생성, 수정, 삭제
◦
왜 인가요? = 회원 가입처럼 개인정보가 담긴 내용을 제출(post방식)할 때 사용하는 방식이기 때문이에요.
GET 방식과 POST 방식의 가장 큰 차이점은 바로 url에 사용자가 입력한 값이 노출이 되는지, 그렇지 않은지입니다.
GET 방식의 경우 서버에서 어떤 데이터를 가져와서 보여주는 용도로 사용되며, 서버의 값이나 상태를 바꾸지 않습니다.
게시판의 리스트라던지 글 보기 기능 같은 것이 해당됩니다. ( 조회수를 올려주는 것은 예외로 하겠습니다)
반면, POST방식은 서버의 값이나 상태를 추가하기 위해서 사용합니다. 글쓰기를 하면 글의 내용이 DB에 저장되고, 수정을 하면 DB값이 수정될 때에 POST 방식을 사용합니다.
쉽게 말하자면, 어떤 페이지를 보고 있을 때, 다른 사람에게 주소를 보내주기 위해서 URL을 복사해 줄 수 있어야 합니다.
POST를 할 경우에는 값이 내부적으로 전달되기 때문에 ( 요청이 Requset body에 담기기 때문에 ) URL만 전달할 수 없습니다.
(== 앞에서 url에 사용자가 입력한 정보들이 노출된다고 했는데, 사용자가 입력한 비밀번호, 주소 등 개인정보 등이 url에 그대로 노출되면 안 되잖아요. 그래서 값을 내부적으로 전달(= Request Body에 담아서 보냄) 하기 때문에 url만 전달할 수 없는 거랍니다.)
form 안에 사용자가 입력한 값들을 담아서 submit을 하는 형태가 POST라고 정리할 수 있습니다
정리하자면!
•
get 방식 : 요청 시 사용자가 입력한 값들이 url에 노출되는 방식
◦
이름 그대로 어떠한 데이터를 서버로부터 받아(GET) 올 때 주로 사용하는 Method입니다.
◦
데이터 생성/수정/삭제 없이 받아오기만 할 때 사용됩니다.
◦
가장 간단하고 많이 사용되는 HTTP Method
◦
언급한 대로 주로 데이터를 받아올 때 사용되기 때문에 request에 body를 안 보내는 경우가 많다.
•
post 방식 : 요청 시 사용자가 입력한 값들이 url에 노출되지 않는 방식(회원가입, 로그인)
◦
데이터를 생성/수정/삭제할 때 주로 사용되는 Method입니다.
◦
데이터를 생성 및 수정할 때 많이 사용하기 때문에 대부분의 경우 requst body가 포함돼서 보내진다.
꼬리질문
•
그럼 위의 과정이 OSI 7계층에서 몇 계층에서 일어날까요?
물론, POST만으로 생성/수정/삭제가 가능은 하지만, RESTful한 API를 만들기 위해서는 이를 구분해서 사용해야합니다.
먼저 DELETE는 사용자의 정보를 삭제할 때,
PUT은 사용자의 정보 전체를 변경할 때,
PATCH는 사용자의 정보 중 일부만을 변경할 때 사용됩니다.