본문 바로가기

Develop Log/개발 관련 잡학다식

HTTP Method

반응형

HTTP Method

HTTP 메서드는 클라이언트가 서버로 전송하는 HTTP 요청의 유형을 정의한다.

탄생 배경

웹이 처음 등장한 1990년대 초반, 그것은 비교적 단순한 구조였다.

사람들이 웹 서버에 저장된 문서를 보기 위해 사용했던 웹 브라우저는 주로 문서를 "가져오는" 기능만 필요했기 때문에 이러한 행동을 수행하는 HTTP 메서드로 GET이 사용되었다

 

그러나 웹이 발전하면서 사용자들은 웹 사이트와 상호 작용하거나 웹 사이트에 정보를 제공하는 등 더 복잡한 작업을 수행이 필요해졌다. 예를 들어, 사용자가 웹 사이트에 새로운 정보를 제출하거나 웹 사이트의 정보를 업데이트하거나 삭제하는 등의 기능이 필요해졌고 이러한 요구사항을 충족하기 위해, HTTP 1.0 및 이후 버전에서는 POST, PUT, DELETE 등의 새로운 HTTP 메소드가 도입되었다.

 

각 HTTP 메소드는 특정 유형의 웹 상호작용을 나타내며, 이를 통해 웹 애플리케이션은 사용자의 요청을 더 정확하게 이해하고 처리할 수 있게 되었다.

Method

  1. GET: 서버에서 정보를 요청할 때 사용된다. GET 요청은 정보를 검색하는데 사용되므로, 서버의 상태를 변경시키지 않아야 한다.(즉, "멱등(idempotent)" 해야 한다) GET 요청의 장점은 캐싱이 가능하다는 점이며, 단점은 보안에 취약하다는 점이다. GET 요청은 URL에 파라미터를 포함하므로, 민감한 데이터를 전송하기에는 적합하지 않다
  2. POST: 클라이언트가 서버에 정보를 제출하려고 할 때 사용된다. POST 요청은 서버의 상태를 변경하는데 사용될 수 있으며, POST의 장점은 본문(body) 안에 데이터를 전송하므로 GET보다 보안적인 측면에서 우위에 있다는 점이다. 하지만 POST를 사용함에 있어 단점은 캐싱이 불가능하다는 점이다.
  3. PUT: 서버의 리소스를 업데이트하거나 생성할 때 사용된다. PUT은 "멱등(idempotent)" 한 method이며 즉, 동일한 요청을 여러 번 보내도 결과가 동일해야 한다. 이 메서드의 장점은 전체 리소스를 업데이트할 수 있다는 점이고, 단점은 부분적인 업데이트가 어렵다는 점이 있다.
  4. PATCH: 서버의 리소스를 부분적으로 수정할 때 사용된다. PATCH"멱등(idempotent)" 한 연산일 수도 있고 아닐 수도 있다. 이 메소드의 장점은 리소스의 일부만 업데이트할 수 있다는 점이며, 단점은 구현이 PUT보다 복잡하다는 점이다.
  5. DELETE: 서버의 리소스를 삭제할 때 사용된다. DELETE도 "멱등(idempotent)" 한 이다. 이 메서드의 장점은 명확한 의미(리소스 삭제)를 가지고 있다는 점이고, 단점은 삭제를 취소하거나 복구하는 것이 어렵다는 점이다.

장점과 단점

장점

  1. 의도의 명확성: HTTP 메소드는 클라이언트의 의도를 명확하게 서버에 전달한다. 예를 들어, GET은 리소스를 조회하고, POST는 새로운 리소스를 생성하고, PUT은 기존 리소스를 수정하며, DELETE는 리소스를 삭제하는 것을 의미한다. 이를 통해 서버는 클라이언트의 요청을 더 정확하게 이해하고 적절한 동작을 수행할 수 있다.
  2. 표준화: HTTP 메소드는 인터넷 표준이므로, 모든 웹 개발자와 시스템이 이해하고 적용할 수 있다. 이와 같은 표준화를 통해 웹 상호작용의 일관성이 보장되며 새로운 개발자가 프로젝트를 이어서 개발하더라도 쉽게 이해하며 유지보수등을 용이하게 할 수 있게 된다.
  3. 멱등성과 안전성: HTTP 메소드 중 일부는 멱등성(idempotent)과 안전성(safe)을 가지고 있다. 위에서 이야기했듯 멱등한 메서드는 동일한 요청을 여러 번 보내도 동일한 결과를 반환하며, 안전한 메서드는 서버의 상태를 변경하지 않는다. 이런 속성은 특정 상황에서 웹 애플리케이션의 안정성과 예측가능성을 높여주는 역할을 하게 된다.

단점

  1. 제한적인 동작: HTTP 메소드는 정해진 수의 동작만을 정의하고 있기 때문에 오히려 사용을 하게 됨으로써 특정 웹 애플리케이션의 복잡한 요구사항을 완전히 표현할 수 없을 수 있다.
  2. 보안 이슈: 일부 HTTP 메소드, 특히 POST, PUT, DELETE는 서버의 상태를 변경하는 데 사용된다. 이 메서드들은 부적절하게 사용되면 보안 위협을 초래할 수 있으므로, 이를 방지하기 위한 적절한 인증과 권한 검사가 필요하다.
  3. 크로스 도메인 제한: 보안 문제로 인해, 웹 브라우저는 기본적으로 다른 도메인으로의 POST, PUT, DELETE 요청을 제한하는데, 이를 해결하기 위해 CORS(Cross-Origin Resource Sharing)와 같은 추가적인 기술을 사용해야 한다.
반응형

'Develop Log > 개발 관련 잡학다식' 카테고리의 다른 글

Vite가 무엇일까  (0) 2023.07.21
브라우저의 스토리지 종류  (0) 2023.07.21
OSI(Open Systems Interconnection) 7계층  (0) 2023.07.18
ORM  (0) 2023.07.17
Http 버전별 특징  (0) 2023.07.16