[HTML] [HTTP] 주요 메서드 5가지 정리(GET / POST / PUT / PATCH / DELETE)

주요 HTTP 메서드 5가지

HTTP는 다양한 메서드를 정의하고 있다. 자주 사용되는 주요 HTTP 메서드 5개를 살펴보자. 적절한 목적에 사용할 수 있도록 각각의 메서드의 특징과 주로 사용되는 상황을 정리하였다.

참고로 해당 메서드는 일종의 약속이다. 메서드 그 자체가 기능을 제공하는 것이 아니며, 메서드 이름에 알맞는 내용으로 서버에서 코드를 구현해야 한다.

  • GET: 리소스 조회
    (최근에는 Representation이라는 이름을 많이 사용한다.)
  • POST: 요청 데이터 처리, 주로 등록에 사용
  • PUT: 리소스를 대체, 해당 리소스가 없으면 생성
  • PATCH: 리소스 부분 변경
  • DELETE: 리소스 삭제

기타 메서드도 존재한다.

  • HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
  • CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

1. GET 메서드

GET /search?q=hello&hl=ko HTTP/1.1 
Host: www.google.com 

GET 메서드는 리소스의 조회를 위해 사용한다. 서버에 전달하고 싶은 데이터가 있다면 query(쿼리 파라미터, 쿼리 스트링)에 담아 보낸다. 서버는 타겟 리소스에 해당하는 representation data를 응답 데이터로 보낸다.



Q. GET 메서드로 요청할 때는 왜 query(쿼리 파라미터, 쿼리 스트링)를 써야 할까?
GET 메서드도 POST 메서드와 같이 데이터를 담을 수 있는 메시지 바디가 존재한다. 하지만, GET 메서드의 메시지 바디를 확인하지 않는 서버가 대부분임으로 거의 사용되지 않는다.

GET은 리소스를 요청하기 위해 만들어 졌다. URL의 URI가 자원이 위치한 곳을 나타낸다. 메시지 바디에 데이터를 실어야 하는 상황은 거의 없다. 따라서, 일반적인 서버에서는 GET 요청의 메시지 바디를 확인하지 않는다. 실제로 메시지 바디에 데이터가 있더라도 처리되지 않을 확률이 높다.


2. POST 메서드

POST /members HTTP/1.1 
Content-Type: application/json

{
    "username": "hello",
    "age": 20 
}

POST 메서드는 요청 데이터의 처리를 목적으로 사용한다. 메시지 바디를 통해 서버로 요청 데이터를 전달하면, 서버는 정해진 로직에 따라 요청 데이터를 처리한다. POST 메서드를 사용한다고 특정한 로직이 자동으로 실행되는 것은 아니다. 리소스마다 POST 요청이 오면 어떻게 데이터를 처리할지 로직을 구현해야 한다. POST 매서드는 대상 리소스에 정의된 로직에 따라 고유한 기능을 수행한다. 주로, 전달된 데이터를 이용하여 신규 리소스를 등록하거나 프로세스를 처리한다.



POST 메서드는 아래와 같은 작업을 요청할 때 사용된다.

  1. HTML 양식으로 입력된 데이터 블록을 리소스 로직에 제공한다.
    • 예) HTML FORM에 입력한 정보로 회원 가입, 주문 등에서 사용
  2. 게시판, 뉴스 그룹, 메일링 리스트, 블로그 또는 유사한 기사 그룹에 메시지 게시
    • 예) 게시판 글쓰기, 댓글 달기
  3. 서버가 아직 식별하지 않은 새 리소스 생성
    • 예) 신규 주문 생성
  4. 기존 자원에 데이터 추가
    • 예) 한 문서 끝에 내용 추가하기
  5. 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우
    • 예) 주문에서 결제완료 -> 배달시작 -> 배달완료 처럼 단순히 값 변경을 넘어 프로세스의 상태가 변경되는 경우. POST의 결과로 새로운 리소스가 생성되지 않을 수도 있다.
  6. 기타
    • 애매한 경우 POST를 사용한다. 예) JSON으로 조회 데이터를 넘겨야 하는데, GET 메서드를 사용하기 어려운 경우. POST는 사실상 모든지 할 수 있다.

3. PUT 메서드

PUT /members/100 HTTP/1.1 
Content-Type: application/json
{
	"username": "hello",
	"age": 20
}

PUT 메서드는 리소스 전체를 대체한다. 기존 리소스가 없을 경우 새로 생성한다. 즉, 덮어쓰기를 수행한다고 볼 수 있다. POST와 차이점은 클라이언트가 리소스의 위치를 알고 URI를 명시해야 한다는 점이다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

리소스가 이미 존재하는 경우, 기존 데이터를 대체한다.

리소스가 없는 경우, 새로운 데이터를 생성한다.

주의할 점은 리소스를 완전히 대체한다는 것이다. 부분적인 수정이 불가능하다.


4. PATCH 메서드

PATCH /members/100 HTTP/1.1 
Content-Type: application/json
{
	"age": 50
}

PATCH 메서드는 리소스를 부분 변경한다. 부분 변경이 필요한 상황에서 PATCH를 사용할 수 없다면 POST를 사용한다.



5. DELETE 메서드

DELETE /members/100 HTTP/1.1 
Host: localhost:8080

DELETE 메서드는 리소스를 제거한다.


profile
7년간 마케터로 일했고, 현재는 헤렌에서 백엔드 개발자로 일하고 있습니다. 고객 가치를 설계하는 개발자를 지향하며, 개발, 독서, 글쓰기를 좋아합니다. 업이 심오한 놀이이길 바라는 덕업일치 주의자입니다.
 
 
[출처] https://velog.io/@woply/HTTP-%EC%A3%BC%EC%9A%94-%EB%A9%94%EC%84%9C%EB%93%9C-5%EA%B0%80%EC%A7%80-%EC%A0%95%EB%A6%ACGET-POST-PUT-PATCH-DELETE

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
» [HTML] [HTTP] 주요 메서드 5가지 정리(GET / POST / PUT / PATCH / DELETE) file 졸리운_곰 2025.04.21 13
577 [JavaScript] Algorithm | Fizz Buzz 졸리운_곰 2025.01.03 51
576 [wordpress, 워드프레스] 워드프레스로 쉽게 랜딩 페이지 만들기 (feat. 엘리멘터, GeneratePress, Divi) file 졸리운_곰 2024.12.20 37
575 [wordpress, 워드프레스] WordPress 페이지또는 글에 별도 CSS와 JavaScript 추가하기 file 졸리운_곰 2024.12.19 46
574 [wordpress 플러그인] 코스모스팜. 회원관리 1.메뉴에 로그인 넣기 file 졸리운_곰 2024.08.25 107
573 [wordpress 플러그인] WP-Members로 회원제 사이트 만들기 file 졸리운_곰 2024.08.25 152
572 [HTML] How to force link from iframe to be opened in the parent window : iframe에서 부모 창에서 열리도록 링크를 강제하는 방법 졸리운_곰 2024.08.22 113
571 [LAMPP] Ubuntu 20.04에서 PHP 8.1을 설치하거나 업그레이드하는 방법 졸리운_곰 2024.08.18 111
570 [Javascript] jQuery 달력 위젯 datepicker 사용하기 file 졸리운_곰 2024.08.13 127
569 [Javascript] onload, ready file 졸리운_곰 2024.08.13 135
568 [javascript] 제이쿼리로 시도, 시군구 선택하기 졸리운_곰 2024.08.13 128
567 [HTML] CSS 파일 불러오기 졸리운_곰 2024.08.09 109
566 [HTML/CSS] [SCSS] HTML에 SCSS 적용하는 법 / how to apply scss to html file 졸리운_곰 2024.08.09 140
565 [HTML/CSS] [SCSS] HTML에 SCSS 적용하는 법 file 졸리운_곰 2024.08.09 140
564 [php worldpress] 워드프레스 새 서버 이전시 페이지 안나오는 문제 : How to Rewrite URLs with mod_rewrite for Apache on Ubuntu 20.04 file 졸리운_곰 2024.08.07 225
563 CSS selector 졸리운_곰 2024.08.02 180
562 [전자상거래/쇼핑몰 개발] [카페24쇼핑몰] 품목생성형과 상품연동형 옵션의 차이점이 궁금합니다. 졸리운_곰 2024.07.30 172
561 [HTML] Netlify 로 정적 웹 사이트 배포하기 file 졸리운_곰 2024.07.29 114
560 [php worldpress] PHP query to SQL server database (wordpress) 졸리운_곰 2024.07.28 246
559 [AWS] 인프라/AWS VPC 구성 후 SSH 연결하기 file 졸리운_곰 2024.07.24 252
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED