HTTP 메서드

Chori·2021년 11월 22일
0
post-thumbnail

주요 메서드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용(?)
  • PUT : 리소스를 대체, 래당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

GET

  • 리소스를 조회한다.
  • 서버에 전달하고 싶은 데이터는 query(쿼리 스트링)를 통해서 전달
  • 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장X
요청 데이터
GET /members/100 HTTP/1.1
Host: localhost:8080

응답 데이터
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 34
{
 "username": "young",
 "age": 20
}

클라이언트가 members 데이터를 서버에 요청하면, 서버에서 응답문을 json형식으로 만들어 응답을 완료한다. 정상적으로 응답하면 상태코드 200 OK가 표시된다. (꼭 json이 아닐 수도 있다.)

POST

  • 요청 데이터 처리
  • 메시지 바디를 통해 서버로 요청 데이터 전달
  • 서버는 요청데이터를 처리
    - 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다.
  • 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
요청 데이터
POST /members HTTP/1.1
Content-Type: application/json
{
 "username": "young",
 "age": 20
}

응답 데이터
HTTP/1.1 201 Created //200으로 반환되어도 된다.
Content-Type: application/json
Content-Length: 34
Location: /members/100 
{
 "username": "young",
 "age": 20
}

/members를 요청하면 /members/100으로 신규 리소스 식별자(100)를 생성하여 반환한다.

POST 정리

1. 새 리소스 생성(등록)
서버가 아직 식별하지 않은 새 리소스 생성
2. 요청 데이터 처리
단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우
POST의 결과로 새로운 리소스가 생성되지 않을 수 있다.
예) POST /orders/{orderId}/start-delivery (컨트롤 URI)
3. 다른 메서드로 처리하기 애매한 경우
예) JSON으로 조회 데이터를 넘겨야 하는데, GET 메서드를 사용하기 어려운 경우
애매하면 POST

POST는 만능이다.
다만 조회는 GET으로 처리하는게 빠르고 간단하기 때문에 조회는 GET을 사용한다.

PUT

  • 리소스를 대체
    리소스가 있으면 대체, 없으면 생성 (덮어씌우는 개념)
  • 클라이언트가 리소스를 식별
    클라이언트가 리소스 위치를 알고 URI 지정 (위치를 모르는 POST와 차이가 있음)
  • 클라이언트가 지정한 URI로 리소스를 요청하면, 해당 서버에 리소스가 있더라도
    새로운 리소스로 대체된다.
PUT /members/100 HTTP/1.1
Content-Type: application/json
{
 "username": "old",
 "age": 50
}
  • 주의할 점은 리소스를 덮어씌우기 때문에 기존 리소스는 삭제된다.

PATCH

  • PUT 리소스 덮어씌우기 대신 PATCH를 쓰면 리소스 내 부분마다 변경이 가능하다.
PATCH /members/100 HTTP/1.1
Content-Type: application/json
{
 "age": 50
}

/members/100
{
 "username": "young",
 "age": 50
}

age값만 변경되게 된다.

DELETE

  • 리소스를 제거하기
DELETE /members/100 HTTP/1.1
Host: localhost:8080

members/100 주소의 리소스를 제거하기

기타 메서드

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

해당 글은 인프런 김영한 님의 강의 [모든 개발자를 위한 HTTP 웹 기본 지식]을 학습하여 정리한 내용입니다.

profile
꾸준한 성장

0개의 댓글