HTTP Method는 클라이언트와 서버 사이에 이뤄지는 요청과 응답 데이터를 전송하는 방식이다.
서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.
총 9가지가 있으며 주로 GET, POST, PUT, PATCH, DELETE를 사용한다.
주요 메서드
- GET : 리소스 조회
- POST : 요청 데이터 처리, 주로 등록에 사용
- PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
- PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
- DELETE : 리소스 삭제
기타 메서드
- HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환
- OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 (주로 CORS에서 사용)
- CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
- TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
GET
리소스 조회 메서드 (Read)
데이터를 전달할 때는 쿼리스트링을 통해서 전달한다.
메시지 Body를 사용해서 데이터를 전달할 수 있지만, 서버에서 따로 구성해야 되기 때문에 지원하지 않는 곳이 많아서 권장하지 않는다.
조회할 때 POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능하기에 GET을 사용하는 것이 유리하다.
POST
전달한 데이터 처리/생성 요청 메서드 (Create)
메시지 Body를 통해 서버로 요청 데이터를 전달하면 서버는 요청 데이터를 처리하여 업데이트한다.
전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용한다.
프로세스 처리
단순히 데이터를 생성하거나, 값을 변경하는 것을 넘어 프로세스의 상태가 변경되는 경우에 사용한다. (시스템에 큰 변화가 생길 때)
이때 POST의 결과로 새로운 리소스가 생성되지 않을 수도 있다.
PUT
리소스를 대체(수정)하는 메서드 (Update)
만일 요청 메시지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다.
- /members/100 : 데이터가 존재하면 기존에 것을 완전 대체 한다.
- /members/100 : 데이터가 없으면 대체하지 못하므로 새로 생성한다.
데이터를 대체해야 하니, 클라이언트가 리소스의 구체적인 전체 경로를 지정해 보내주어야 한다.
PATCH
리소스 일부 부분을 변경하는 메서드 (Update)
만일 PATCH를 지원하지 않는 서버에서는 POST를 대체로 사용할 수 있다.
DELET
리소스를 제거하는 메서드 (Delete)
HTTP Method의 속성
3가지 속성이 있으며 속성별로 메서드를 구분할 수 있다.
- Safe (안전)
- Idempotent (멱등)
- Cacheable (캐시 가능)
- 요청/응답에 Body 존재
Safe (안전)
호출해도 리소스를 변경하지 않는 메서드 속성이다. 즉, 데이터의 변경이 일어나지 않는다는 뜻이다.
GET 메서드는 단순히 데이터를 가져올 때 사용하는데, 이러한 GET과 같은 메서드를 안전(Safe)하다고 한다.
Idempotent (멱등)
몇 번을 호출하든 최종적인 결과는 똑같은 메서드 속성이다.
데이터를 가져오거나(GET), 삭제(DELETE), 대체(PUT) 작업은 몇 번이 수행되건 결과가 같다.
하지만 POST의 경우는 다르다. POST를 두 번 호출하면 같은 결제가 중복해서 발생할 수 있기 때문에 멱등하지 않다.
Cacheable (캐시 가능)
응답 결과 리소스를 캐시 해서 사용해도 되는지에 대한 속성이다.
GET, HEAD, POST, PATCH 메서드가 이 속성을 가지는데, 일반적으로 GET, HEAD 정도만 캐시로 사용한다.
요청/응답에 Body 존재
요청이나 응답 시에 데이터를 메시지 Body에 담아 보내는지, 아닌지에 대한 속성이다.
실전
Q. HTTP Method에 대해 설명해 주세요.
A. 서버와 클라이언트 사이에 이뤄지는 요청과 응답 데이터를 전송하는 방식을 말합니다. 주로 사용되는 건 GET, POST, PUT, PATCH, DELETE로 5가지가 있으며 그 외에 CONNECT, HEAD, OPTIONS, TRACE로 4가지가 더 있습니다.
GET은 리소스를 조회하는 메서드, POST는 리소스를 생성하는 메서드, PUT과 PATCH는 리소스를 수정하는 메서드, DELETE는 리소스를 삭제하는 메서드입니다.
PUT과 PATCH는 둘 다 리소스를 수정하는 메서드이지만 PUT은 전체 변경이지만, PATCH는 일부만 변경하는 특성이 있습니다. 또한 PUT은 변경하려는 데이터가 존재하지 않으면 새롭게 생성하는 특성도 가지고 있습니다.
참고
'멋진 개발자 > Network' 카테고리의 다른 글
개발자 취준 기록 38 - OSI 7계층 (0) | 2024.04.02 |
---|---|
개발자 취준 기록 37 - HTTP 상태 코드 (0) | 2024.04.01 |
[항해 취업코스] 개발자 취준 기록 25 - HTTP & HTTPS (0) | 2024.03.20 |
[항해 취업코스] 개발자 취준 기록 24 - 쿠키와 세션 (0) | 2024.03.19 |
[항해 취업코스] 개발자 취준 기록 23 - TCP와 UDP (0) | 2024.03.18 |