HTTP 메서드

갱두·2021년 10월 17일
0

📚 네트워크

목록 보기
6/15
post-custom-banner

HTTP 메소드

클라이언트가 웹 서버에게 사용자의 요청의 목적이나 종류를 알리는 수단
주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정

주요 메소드의 종류

1. GET

리소스의 조회에 사용함
서버에 전달하고 싶은 데이터를 쿼리를 통해 전달함.
메세지 바디를 통해 데이터를 전달할 수도 있지만 지원하지 않는 곳도 존재하기 때문에 권장 ❌
CRUD 로 따지면 R

2. POST

메세지 바디를 통해 서버로 요청 데이터를 전달함 서버는 메세지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행함. 주로 신규 리소스의 등록, 프로세스 처리 등에 사용함
또한, 다른 메소드로 처리하기 애매한 경우 주로 사용됨.
조회할 때 데이터를 넘기기 어려운 경우 데이터를 넘기는데 사용할 수 있지만 POST는 캐싱하기 어렵기 때문에 조회는 GET을 사용하는 것이 좋음
CRDU로 따지면 C

3. PUT

목적 리소스를 현재 메세지의 값으로 생성 하거나 만약 존재한다면 기존 리소스를 삭제하고 덮어쓰기
CRUD로 따지면 C,U임

🤷🏻‍♀️ POST와 PUT은 어떻게 구분할까
PUT은 POST와 다르게 클라이언트가 리소스의 위치를 알고 URI를 지정해줘야 함
ex - PUT/members/100

4. PATCH

리소스를 부분적으로 변경한다
지원하지 않는 경우에는 POST로 대체해서 사용함
CRUD로 따지면 U임

5. DELETE

특정 리소스의 삭제 를 요청하는 데 사용
CRUD로 따지면 D임

기타 메소드

잘 사용되지 않는 메소드들이긴 하지만
HEAD / OPTIONS / CONNECT / TRACE 등이 있음

  • HEAD : GET과 비슷하지만 헤더만 가지고 옴

HTTP 메소드의 속성

1. 안전성

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

2. 멱등성

동일한 요청을 여러번 보내도 한 번 보내는 것과 같은 것
외부 요인으로 중간에 리소스가 변경되는 것은 고려 ❌ 해당 요청을 기준으로 고려함
GET, PUT, DELETE 는 멱등성을 지녀야 함

3. 캐시가능성

응답 결과를 서버에 캐싱해서 사용해도 되는 메소드
GET, HEAD, POST, PATCH가 가능하지만 실무에서는 구현이 어렵기 때문에 GET, HEAD 정도만 캐싱해서 사용함

더 나아가서 불필요한 메소드는 허용하지 않고 필요한 메서드만 허용하는 whitelist 방식으로 관리하자.

출처 : https://girawhale.tistory.com/66
https://github.com/ksundong/backend-interview-question

profile
👩🏻‍💻🔥
post-custom-banner

0개의 댓글