이전 글에 이어서 HTTP 통신 방식에 대해 작성하고자 한다.
말 그대로 얻는다는 뜻이다. 클라이언트가 서버에 리소스를 조회할 때 사용하는 방식이다.
www.velog.io/@minlove2013/posts?q=network
그러면 위에 적힌 URL을 해석해보자.
post? URL의 끝이다. URL의 끝은 ?마크를 이용하여 나타낸다. URL의 끝에 클라이언트가 요청하는 리소스를 쿼리 스트링 방식으로 전송한다. min의 velog의 posts에서 network가 포함된 제목을 요청한다는 의미이다. 또한 여러가지의 쿼리를 전송할 때에는 &을 사용하여 요청한다.
www.velog.io/@minlove2013/posts?q=network&hl=ko
만약 GET 방식으로 로그인을 했다고 생각해보면 머리가 아프다. (아래의 URL은 예시일 뿐이다.)
www.velog.io/login?id=min&pw=qwerty
..
새 리소스 생성 (등록), 단순히 값 변경을 넘어서 프로세스의 상태가 변경되는 경우에 사용하는 방식이다.(새로운 리소스가 생성이 안될 경우도 있다.)
음.. 마지막으로 어떤 요청 방식을 사용할지 애매한 경우에도 POST를 사용한다고 한다.
위에 특징들을 잘 비교해보면 알 수 있다. 보기 쉽게 정리하려고 한다.
| GET | POST | |
|---|---|---|
| URL 노출 여부 | O | X |
| 데이터 전송 방식 | 헤더에 담아서 전송 | 바디에 담아서 전송 |
| 길이 | 제한 | 제한없음 |
| 캐싱 | 불가능 | 가능 |
| 멱등성 보장 | O | X |
멱등성은 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질 -> 요청을 여러번 보내도 같은 효과
리소스를 대체하는 요청 방식이다.
리소스를 부분 변경하는 요청 방식이다. 위에 PUT 방식에서 userName이 사라지지 않고 age만 변경된다. PUT과의 차이점을 잘 알자. (완전히 대체 <-> 부분 대체)
리소스를 제거하는 요청 방식이다. PUT과 마찬가지로 클라이언트가 리소스 식별.