HTTP

HTTP 메서드 정리

junnrecorder 2023. 8. 24. 09:51

HTTP 주요 메서드

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

 

HTTP 기타 메서드

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

GET

  • 리소스 조회
  • 서버에 전달하고 싶은 데이터는 쿼리파라미터를 똥해서 전달
  • 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음

POST

  • 요청 데이터 처리
  • 메시지 바디를 통해 서버로 요청 데이터 전달
  • 서버는 요청 데이터를 처라 > 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다.
  • 주로 전달된 데이터로 신규 리소스 등록, 프로제스 처리에 사용

POST 사용 예시

  1. 새 리소스 생성
  2. 요청 데이터 처리
  3. 다른 메서드로 처리하기 어려운 경우 ex) GET메서드에 JSON 메시지를 담아 조회를 해야 하는데, GET을 사용하기 어려운 경우

PUT

  • 리소스가 있는 경우, 리소스를 대체
  • 리소스가 없는 경우, 리소스를 생성

POST와 차이점

post/order
{
    "name":"PC",
    "price": "500"
}
post/order
{
    "name":"PC",
    "price": "500"
}
HttpResponse 200 OK
{
    "id":1,
    "name":"PC",
    "price": "500"
}
HttpResponse 200 OK
{
    "id":2,
    "name":"PC",
    "price": "500"
}

POST의 경우 같은 리소스를 다수의 요청을 하게 되어도 응답 리소스의 고유값이 달라지면서 새로운 리소스를 생성해줍니다.

put/order/1
{
    "name":"PC",
    "price": "500"
}

put/order/1
{
    "name":"PC",
    "price": "1000"
}

HttpResponse 200 OK
{
    "id":1,
    "name":"PC",
    "price": "1000"
}

PUT의 경우 같은 리소스를 여러 번 요청하여도 처음 생성된 리소스만 있을 뿐 새로운 리소스를 생성하지 않습니다.

단, 마지막 요청에서 price의 값이 1000으로 요청을 하기 때문에 응답 리소스에서 price의 값은 1000이 됩니다.

 

만약

put/order/1
{
    "price": "1000"
}

HttpResponse 200 OK
{
    "id":1,
    "price": "1000"
}

PUT 요청에서 "name" 이 없고 "price"가진 상태에서 요청을 하게 되면 응답 리소스에는 "name"이 없어지고 "price"만 남게 됩니다.

 

결국 PUT 리소스를 완전히 대체한다고 생각하시면 됩니다.

 

PATCH

  • 리소스 부분 변경
  • PUT 과 같은 기능을 하지만 미세하게 다르다

PUT과 차이점

//기존 메시지 바디
{
    "name":"PC",
    "price": "500"
}

patch/order/1
{
    "price": "1000"
}

HttpResponse 200 OK
{
    "id":1,
    "name":"PC",
    "price": "1000"
}

PUT 과 다르게 리소스를 아예 덮어씌우지 않고 요청한 리소스의 값만 대체를 한다.

'HTTP' 카테고리의 다른 글

URL 이란?  (2) 2023.09.03