oris9

[네트워크] HTTP 메소드에 대해 알아보자 본문

기타 자료

[네트워크] HTTP 메소드에 대해 알아보자

oris9 2024. 4. 7. 05:29

🌐 HTTP 메서드란?

HTTP 메서드는 클라이언트가 웹 서버에게 어떤 종류의 동작을 원하는지를 나타내서 요청을 보낼 때 사용된다.
각 메서드는 특정한 종류의 작업을 수행하도록 설계되었다.

리소스와 동작을 분리해, HTTP 메서드로 서버가 수행해야할 동작을 지정해주고 따로 리소스만 식별할 수 있게 된다.


📚 HTTP 메서드의 종류와 속성 

HTTP 메서드는 총 9가지가 있으며, 대표적인 메서드로는 GET, POST, PUT, DELETE 등이 있다.
각 메서드는 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식을 의미한다. 

메서드 이름 설 명
GET 리스소 조회, 
서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)을 통해서 전달 
(메세지 바디를 통해 전달하는 방법은 지원하지 않는 경우가 많아 권장되지 않고 쿼리스트링은 노출된다는 점을 유의해서 사용)
POST 등록, 요청 데이터 처리 
메시지 바디를 통해 서버로 요청 데이터를 전달하고 서버는 메시지 바디를 통해 들어온 데이터를 처리하여 응답
만약 GET 메서드를 사용하는데, JSON으로 조회 데이터를 넘겨야하는 경우에는 POST를 사용한다

PUT 리소스 덮어쓰기 (해당 리소스가 없으면 생성)
(POST와의 차이점으로는 클라이언트가 리소스의 위치를 알고 URI를 지정한다는 점)
PATCH 리소스 부분 분경 (PUT은 전체 변경이지만, PATCH는 일부만 변경)
(PATCH를 지원하지 않는 서버가 있을 수도 있는데 이 때는 POST를 사용)
DELETE 리소스 삭제
(DELETE 요청은 성공했을 때 보통 응답 본문에 데이터를 포함하지 않음)
HEAD GET과 동일하나 메시지 부분(Body)를 제외하고, 상태 줄과 헤더만 반환
(리소스를 가져오지 않고도 그에 대한 정보를 얻을 수 있어 효율적)
OPTIONS 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 (주로 CORS에서 사용)
OPTIONS 요청은 "Allow"라는 헤더와 함께 해당 리소스에서 사용 가능한 HTTP 메서드 목록을 반환
서버가 어떤 method, header, content-type을 제공하는지 알 수 있다
CONNECT 대상 자원으로 식별되는 서버에 대한 터널을 설정
주로 네트워크 터널을 만드는 데 사용된다. 가장 흔한 예는 HTTPS 통신을 위한 SSL 터널이다.

클라이언트가 CONNECT 메서드를 사용하면, 웹 서버는 목적지 서버와의 네트워크 연결을 설정하고, 클라이언트와 목적지 서버 사이에서 데이터를 릴레이하게 된다.
TRACE 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
주로 진단 목적으로 사용된다.

TRACE 요청은 클라이언트에서 서버로 전송되며, 이 과정에서 어떤 변경이나 추가가 이루어지는지를 확인하는데 사용될 수 있다. TRACE 요청이 서버에 도달하면, 서버는 요청을 그대로 응답 본문으로 반환한다.

이를 통해 클라이언트는 요청이 어떻게 처리되었는지 확인할 수 있다.

 

HTTP 메서드는 다음과 같이 3가지 속성이 있으며 속성별로 메서드를 구분할 수 있다.

`Safe(안전)` : 호출해도 리소스를 변경하지 않으므로 안전하다.  (GET, HEAD, OPTIONS, TRACE 메서드)
`Idempotent(멱등)` : "연산을 여러 . 번적용하더라도 결괏값이 달라지지 않는 일" 이라는 뜻으로, 여러번 호출해도 결과가 똑같은 메서드를 의미한다. 단 외부요인으로 중간에 리소스가 변경되는 것까지 고려하지는 않는다 (GET, PUT, DELETE는 멱등하고 POST는 멱등하지 않다) 
`Cacheable(캐시가능)` : 응답 결과를 서버에 캐싱해서 사용해도 되는 메소드를 의미한다. (GET, HEAD, POST, PATCH가 캐시 가능하지만 POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하기 때문에 구현이 쉽지않다. 그래서 실제로는 GET, HEAD 정도만 캐시하여 사용한다)

 

🌍 HTTP 메서드의 요청 흐름 

HTTP 메서드를 통해 클라이언트는 서버에 요청을 보내고 서버는 그에 대한 응답을 보냅니다. 이러한 요청과 응답 데이터의 전송 과정을 HTTP 메서드 요청 흐름이라고 한다.

 

 

 

참고
https://youwjune.tistory.com/42
 
https://hstory0208.tistory.com/entry/HTTP-메서드-종류-및-속성#recentEntries