클라이언트가 웹 서버에게 사용자의 요청의 목적이나 종류를 알리는 수단
주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정
리소스의 조회에 사용함
서버에 전달하고 싶은 데이터를 쿼리를 통해 전달함.
메세지 바디를 통해 데이터를 전달할 수도 있지만 지원하지 않는 곳도 존재하기 때문에 권장 ❌
CRUD 로 따지면 R
메세지 바디를 통해 서버로 요청 데이터를 전달함 서버는 메세지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행함. 주로 신규 리소스의 등록, 프로세스 처리 등에 사용함
또한, 다른 메소드로 처리하기 애매한 경우 주로 사용됨.
조회할 때 데이터를 넘기기 어려운 경우 데이터를 넘기는데 사용할 수 있지만 POST는 캐싱하기 어렵기 때문에 조회는 GET을 사용하는 것이 좋음
CRDU로 따지면 C
목적 리소스를 현재 메세지의 값으로 생성 하거나 만약 존재한다면 기존 리소스를 삭제하고 덮어쓰기 함
CRUD로 따지면 C,U임
🤷🏻♀️ POST와 PUT은 어떻게 구분할까
PUT은 POST와 다르게 클라이언트가 리소스의 위치를 알고 URI를 지정해줘야 함
ex - PUT/members/100
리소스를 부분적으로 변경한다
지원하지 않는 경우에는 POST로 대체해서 사용함
CRUD로 따지면 U임
특정 리소스의 삭제 를 요청하는 데 사용
CRUD로 따지면 D임
잘 사용되지 않는 메소드들이긴 하지만
HEAD / OPTIONS / CONNECT / TRACE 등이 있음
호출해도 리소스를 변경하지 않는 특성
동일한 요청을 여러번 보내도 한 번 보내는 것과 같은 것
외부 요인으로 중간에 리소스가 변경되는 것은 고려 ❌ 해당 요청을 기준으로 고려함
GET, PUT, DELETE 는 멱등성을 지녀야 함
응답 결과를 서버에 캐싱해서 사용해도 되는 메소드
GET, HEAD, POST, PATCH가 가능하지만 실무에서는 구현이 어렵기 때문에 GET, HEAD 정도만 캐싱해서 사용함
더 나아가서 불필요한 메소드는 허용하지 않고 필요한 메서드만 허용하는 whitelist 방식으로 관리하자.
출처 : https://girawhale.tistory.com/66
https://github.com/ksundong/backend-interview-question