HTTP 메소드(겟폿풋펫딜): REST API

GET, POST, PUT, PATCH, DELETE에 대해 알아보자

줄여서 겟폿풋펫딜

 

1. GET 메소드

GET은 리소스를 조회하는 데 사용되는 가장 기본적인 HTTP 메소드다.

웹 브라우저에서 주소창에 URL을 입력하면 기본적으로 GET 요청이 발생한다.

 

특징:

  • 서버의 데이터를 변경하지 않는 안전한 메소드
  • 캐시 가능
  • URL에 데이터가 노출되므로 보안에 주의
  • 데이터 크기에 제한이 있음

예시:

GET /api/users/123 HTTP/1.1
Host: example.com

 

 

 

2. POST 메소드

POST는 새로운 리소스를 생성할 때 사용됩니다. 서버에 데이터를 제출하는 가장 일반적인 방법입니다.

 

특징:

  • 서버의 상태를 변경
  • 요청 본문에 데이터를 포함
  • 캐시할 수 없음
  • 데이터 크기 제한 없음

예시:

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "name": "홍길동",
    "email": "hong@example.com"
}

 

 

 

3. PUT 메소드

PUT은 리소스를 완전히 대체할 때 사용됩니다. 해당 리소스가 없으면 새로 생성하고, 있으면 전체를 교체합니다.

 

특징:

  • 멱등성(같은 요청을 여러 번 보내도 결과가 동일)
  • 전체 리소스를 교체
  • 리소스의 정확한 위치(URI)를 알고 있어야 함

예시:

PUT /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "name": "홍길동",
    "email": "hong@example.com",
    "age": 30
}

 

 

 

4. PATCH 메소드

PATCH는 리소스의 일부분만 수정할 때 사용됩니다. PUT과 달리 전체가 아닌 일부만 변경할 수 있습니다.

 

특징:

  • 부분 수정에 최적화
  • 변경이 필요한 필드만 전송
  • PUT보다 네트워크 효율성이 높음

예시:

PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "email": "newhong@example.com"
}

 

 

 

5. DELETE 메소드

DELETE는 특정 리소스를 삭제할 때 사용됩니다.

 

특징:

  • 멱등성 보장
  • 삭제 후 해당 리소스에 접근 불가
  • 보안상 중요한 작업이므로 인증 필요

예시:

DELETE /api/users/123 HTTP/1.1
Host: example.com

 

 

실제 활용 사례

사용자 관리 API의 예시를 통해 각 메소드의 활용:

  • GET /users - 전체 사용자 목록 조회
  • GET /users/123 - 특정 사용자 정보 조회
  • POST /users - 새로운 사용자 등록
  • PUT /users/123 - 사용자 정보 전체 수정
  • PATCH /users/123 - 사용자 정보 일부 수정
  • DELETE /users/123 - 사용자 삭제

 

주의사항

1. 보안

  • 중요한 데이터는 항상 HTTPS를 사용
  • 적절한 인증/인가 구현 필요
  • GET 요청에 민감한 데이터 포함하지 않기

2. 성능

  • 적절한 캐싱 전략 수립
  • 대용량 데이터 처리 시 페이징 구현
  • 불필요한 요청 최소화

3. 에러 처리

  • 적절한 HTTP 상태 코드 사용
  • 명확한 에러 메시지 제공
  • 예외 상황에 대한 처리 구현

 

 

 

 

'Today I learned' 카테고리의 다른 글

WIL  (0) 2025.01.24
JWT, Session  (0) 2025.01.22
장고 블로그 꾸미기(코드 없음)  (8) 2025.01.20
WIL 디장고의 관례  (0) 2025.01.17
Django - Cookie와 Session  (0) 2025.01.17