본문 바로가기
Computer Science/네트워크

[네트워크] HTTP Method (GET/POST/PUT/PATCH/DELETE, GET과 POST 차이)

by 그적 2024. 2. 16.

목차

  • HTTP와 HTTP 메서드
  • HTTP 메서드
    • GET 
    • POST
    • PUT
    • PATCH
    • DELETE
  • GET과 POST 차이

 


1. HTTP와 HTTP 메시지

HTTP는 웹 상에서 데이터를 요청하거나 응답하기 위해 사용되는 프로토콜이다. 가장 큰 특징은 클라이언트 - 서버 구조를 띄고 있다는 것이며, OSI 7계층 중 애플리케이션 계층에 속해 80번이나 443번 포트를 이용하고 있다.

 

클라이언트 - 서버 구조에서 클라이언트는 데이터를 요청하는 쪽이고, 서버는 데이터를 응답하는 쪽이다. 클라이언트는 HTTP Request Message의 바디에 데이터를 담아 요청하고, 서버는 HTTP Request Message의 바디에 데이터를 담아 응답한다.

 


2. HTTP 메서드

HTTP 메서드는 클라이언트가 데이터를 어떤 방식으로 요청할 것인지에 대한 정보이기 때문에, HTTP 메서드에 따라 서버가 수행해야 하는 동작이 달라진다. 총 9가지의 종류가 있으며, 이 중 주로 쓰이는 메서드는 5가지로 GET, POST, PUT, PATCH, DELETE가 있다.

 


3. GET

GET 메서드는 리소스를 요청하는 메서드이다. URL 경로에 데이터의 key와 value를 추가함으로써 서버는 클라이언트에게 관련된 데이터를 전달할 수 있다. 하지만 URL 경로가 노출됨과 동시에 캐싱되기 때문에, 유의미한 데이터를 전달할 때는 사용을 자제해야 한다.

 


4. POST

POST 메서드는 새로운 리소스를 생성하는 메서드이다. 클라이언트는 Request Message 바디에 데이터를 추가해 서버에게 데이터를 요청하는데, 서버는 전달받은 데이터를 처리해 새롭게 업데이트된 데이터를 다시 클라이언트로 전달한다. 요청 데이터는 key - value 형태의 JSON으로 Message 바디에 담긴다.

 

데이터를 Body에 담아 전송하기 때문에 메시지 길이에 제한이 없으며, GET 방식과 비교했을 때 데이터가 외부로 노출되지 않는 보안상의 이점을 갖고 있다.

 


5. PUT

PUT 메서드는 리소스를 완전히 대체하는 메서드이다. URL 경로가 존재한다면, 클라이언트가 요청한 데이터로 기존 데이터를 덮어씌운다. 만약 PUT 메서드가 허용된 상태라면, 서버가 악의적으로 조작될 수 있으므로 인가된 사용자만 접근할 수 있도록 웹 페이지를 구성하거나 웹 서버 설정에서 HTTP 메서드를 제한하도록 해야 한다.

 


6. PATCH

PATCH 메서드는 일부 리소스를 변경하는 메서드이다. URL 경로가 존재한다면, 클라이언트가 요청한 데이터로 서버 측 데이터를 일부 변경할 수 있다. 만약 PATCH 메서드가 허용되지 않는 서버라면, POST를 대신 사용할 수 있다.

 


7. DELETE

DELETE 메서드는 리소스를 제거하는 메서드이다. 클라이언트가 요청한 URL 경로의 리소스를 삭제하기 때문에, PUT 메서드와 마찬가지고 인가된 사용자만 접근할 수 있도록 웹 페이지를 구성하거나 웹 서버에서 HTTP 메서드를 제한함으로써 악의적인 조작 가능성을 막아야 한다.

 


8. GET과 POST 차이

HTTP 메서드는 클라이언트가 어떤 방식으로 데이터를 요청할 것인지에 대한 정보이므로, 메서드에 따라 서버가 수행해야 하는 동작이 달라진다. 그중 GET 메서드는 URL 경로에 데이터를 쿼리 스트링 형태로 요청하고, POST 메서드는 HTTP Request 바디에 데이터를 담아 요청하는 방식이다. GET 메서드는 URL 경로에 데이터가 포함되기 때문에, 캐싱 및 로그가 남는 것에 주의해야 한다. 이에 반해 POST 메서드는 데이터가 HTTP 메시지로 감싸져 송수신되기 때문에, GET 메서드보다 보안적 측면에서 좋다고 할 수 있다.

 

  GET POST
데이터 요청 URL 경로 HTTP 메시지 바디
데이터 형태 쿼리스트링 key-value 형태의 JSON
캐싱 URL 경로가 캐싱되어 데이터도 캐싱됨 메시지 바디에 담긴 데이터는 캐싱되지 않음
길이 제한 URL 경로 길이에 제한이 있음 메시지 바디에는 길이 제한이 없음
보안성 좋지 않음 좋음
쓰이는 곳 검색 등 데이터 조회 폼과 같은 데이터 수정

 

댓글