[HTTP] HTTP 메서드

Jane·2021년 2월 1일
3
post-thumbnail

본 글은 김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식을 수강하고 공부한 내용을 정리하기 위해 작성되었습니다.

HTTP 메서드

GET: 특정 리소스를 조회

GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
  • query(쿼리 파라미터, 쿼리 스트링)를 통해 서버에 데이터를 전달한다.

POST: 요청한 데이터 등록하거나 처리
(주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용)

POST /members HTTP/1.1
Content-Type: application/json
{
 "username": "Jane",
 "age": 26
}
  • 메시지 바디를 통해 서버로 요청 데이터 전달하면, 서버는 (약속한 대로) 요청 데이터를 처리한 뒤 응답을 보내준다.
    (리소스 URI에 POST 요청이 오면 요청 데이터를 어떻게 처리할지 리소스마다 따로 정해야 한다.)
HTTP/1.1 201 Created 
Content-Type: application/json
Content-Length: 34
Location: /members/100
{
 "username": "Jane,
 "age": 26
}

PUT: 리소스가 존재하면 기존 리소스를 완전히 대체하고, 해당 리소스가 없으면 새로 생성한다.

PUT /members/100 HTTP/1.1
Content-Type: application/json
{
 "username": "Jane",
 "age": 26
}
  • POST와 다르게 PUT은 클라이언트가 리소스의 위치를 알고 URI를 지정한다.

PATCH: 리소스를 부분적으로 변경한다.

PATCH /members/100 HTTP/1.1
Content-Type: application/json 
{ "age": 50 }
  • PATCH가 지원되지 않는 서버의 경우에는 POST를 사용하면 된다.

DELETE: 특정 리소스를 삭제한다.

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

HEAD: GET과 동일하지만 메시지 부분(Body)을 제외하고, 상태 줄과 헤더만 반환한다.


HTTP 메서드의 속성

안전 (Safe)

  • 메서드를 호출해도 리소스를 변경하지 않는다.
    → GET은 조회만 하는 메서드이기 때문에 안전하다.

멱등 (Idempotent)

  • f(f(x))=f(x)f(f(x)) = f(x)
  • 한 번 호출하든 100번 호출하든 결과가 똑같아야 한다.
    • 멱등 메서드: GET, PUT, DELETE
      ※ POST는 멱등 메서드가 아니다 → 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.
  • 똑같은 요청을 2번 해도 괜찮기 때문에 자동 복구 메커니즘에 사용된다.

캐시가능 (Cacheable)

  • 응답 결과 리소스를 캐시해서 사용할 수 있다.
    • 캐시가능 메서드: GET, HEAD, POST, PATCH
    • POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않기 때문에 GET과 HEAD만 캐시로 사용한다.

Source

0개의 댓글