본문 바로가기

CS/HTTP

HTTP 메소드의 종류와 특징, 속성

HTTP 메소드

주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정한다

 

주요 메소드 종류

GET

리소스의 조회에 사용한다. 

서버에 전달하고 싶은 데이터를 query(parameter, query string)을 통해 전달한다.

메시지 바디를 통해 데이터를 전달할 수도 있지만 지원하지 않는 곳도 존재하기 때문에 권장❌

 

POST

메시지 바디를 통해 서버로 요청 데이터를 전달한다. 서버는 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다.

주로 신규 리소스의 등록, 프로세스 처리 등에 사용한다

  • 신규 리소스를 등록했다면 새로 생성되었다는 201 상태 코드와 생성된 URI 경로(Location)를 반환한다

또한, 다른 메소드로 처리하기 애매한 경우 주로 사용된다. 조회할 때 데이터를 넘기기 어려운 경우 데이터를 넘기는 데 사용할 수 있지만 조회는 GET을 사용하는 것이 좋다! POST는 캐싱하기 어렵기 때문...

 

PUT

목적 리소스를 현재 메시지의 값으로 생성하거나 만약 존재한다면 기존 리소스를 삭제하고 덮어쓰기 한다. 

 

💡 POST와 PUT은 어떻게 구분해서 사용할까?

PUT은 POST와 다르게 클라이언트가 리소스의 위치를 알고 URI를 지정해 주어야 한다!
ex) PUT /members/100

 

PATCH

리소스를 부분적으로 변경한다.

지원하지 않는 경우도 있어 이런 경우 POST로 대체하여 사용

 

DELETE

특정 리소스의 삭제를 요청하는 데 사용

 

기타 메소드

잘 사용되지 않는 메소드들

  • HEAD : GET과 동일하지만 메시지 바디를 제외하고 반환
  • OPTIONS : 대상 리소스에 대한 통신을 설정하는 데 사용
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

 

HTTP 메소드의 속성

안전 Safe

호출해도 리소스를 변경하지 않는 특성

멱등성 Idempotent

동일한 요청을 여러 번 보내도 한 번 보내는 것과 같은 것

외부 요인으로 중간에 리소스가 변경되는 것을 고려하지 않고 해당 요청을 기준으로 고려한다

올바르게 구현한 GET, PUT, DELETE 메소드는 멱등성을 지녀야 한다.

예) 

  • DELETE /members/100 → 200
  • DELETE /members/100 → 404
  • DELETE를 여러 번 호출하면 응답 코드는 달라질 수 있지만, 100번 member가 삭제된 것은 동일

캐시 가능 Cacheable

응답 결과를 서버에 캐시 해서 사용해도 되는 메소드

GET, HEAD, POST, PATCH가 가능하지만 실무에서는 구현이 어렵기 때문에 GET, HEAD 정도만 캐시 하여 사용

 


📚 Reference

[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
https://developer.mozilla.org/ko/docs/Glossary/Idempotent

 

'CS > HTTP' 카테고리의 다른 글

🌐 TCP와 UDP 정리  (0) 2021.02.05
HTTP란? HTTP의 특징, 메시지의 구조  (0) 2021.01.13
주소창에 URL을 입력하면 일어나는 일  (0) 2020.12.31
URI vs URL vs URN  (0) 2020.12.31