[Week 5-2] HTTP 메소드에 대한 이해

BossTeemo·2024년 6월 20일
0

위클리페이퍼

목록 보기
9/15
post-thumbnail
post-custom-banner

HTTP 메소드에 대한 자세한 이해

HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 주고받기 위한 프로토콜입니다.
HTTP는 클라이언트와 서버 간의 요청과 응답을 통해 작동합니다.
이 과정에서 사용되는 HTTP 메소드는 클라이언트가 서버에 어떤 작업을 요청하는지 명시합니다.
이 글에서는 HTTP 메소드의 종류와 각각의 역할, 멱등성(Idempotence)의 개념을 포함해 자세히 살펴보겠습니다.

HTTP 메소드의 종류

  1. GET
  2. POST
  3. PUT
  4. DELETE
  5. HEAD
  6. OPTIONS
  7. PATCH

각 메소드에 대해 자세히 살펴보겠습니다.


1. GET

용도: 서버에서 데이터를 요청할 때 사용됩니다. 주로 데이터를 조회(read)할 때 사용됩니다.

특징:

  • 서버에서 데이터를 가져오는 데 사용됩니다.
  • 요청의 파라미터는 URL에 쿼리 스트링으로 포함됩니다.
  • 서버의 상태를 변경하지 않기 때문에 안전합니다.
  • 멱등성을 가집니다. 동일한 GET 요청을 여러 번 보내도 같은 결과를 반환합니다.
  • 캐싱될 수 있습니다. 이는 네트워크 트래픽을 줄이고 응답 시간을 향상시킵니다.

예제:

GET /users?id=123 HTTP/1.1
Host: www.example.com

이 요청은 서버에 id가 123인 사용자의 정보를 요청합니다.


2. POST

용도: 서버에 데이터를 제출할 때 사용됩니다. 주로 새로운 리소스를 생성(create)할 때 사용됩니다.

특징:

  • 요청 본문에 데이터를 포함합니다.
  • 서버의 상태를 변경할 수 있습니다.
  • 멱등성을 보장하지 않습니다. 동일한 POST 요청을 여러 번 보내면 서버에 여러 리소스가 생성될 수 있습니다.
  • 주로 폼 제출이나 데이터 업로드에 사용됩니다.

예제:

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

{
    "name": "John Doe",
    "email": "john.doe@example.com"
}

이 요청은 서버에 새로운 사용자를 생성하도록 요청합니다.


3. PUT

용도: 서버에 데이터를 업데이트할 때 사용됩니다. 주로 기존 리소스를 대체(replace)할 때 사용됩니다.

특징:

  • 요청 본문에 데이터를 포함합니다.
  • 지정된 리소스를 완전히 대체합니다.
  • 멱등성을 가집니다. 동일한 PUT 요청을 여러 번 보내도 결과가 동일합니다.
  • 자주 리소스를 업데이트하거나 대체하는 데 사용됩니다.

예제:

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

{
    "name": "John Doe",
    "email": "john.doe@example.com"
}

이 요청은 id가 123인 사용자의 정보를 업데이트합니다.


4. DELETE

용도: 서버에서 리소스를 삭제할 때 사용됩니다.

특징:

  • 서버의 상태를 변경합니다.
  • 멱등성을 가집니다. 동일한 DELETE 요청을 여러 번 보내도 결과가 동일합니다.
  • 주로 리소스를 삭제하는 데 사용됩니다.

예제:

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

이 요청은 id가 123인 사용자를 삭제합니다.


5. HEAD

용도: GET 요청과 동일하지만, 응답 본문을 포함하지 않습니다. 주로 리소스의 메타데이터를 조회할 때 사용됩니다.

특징:

  • 서버에서 데이터를 가져오지 않지만, 헤더 정보를 얻을 수 있습니다.
  • GET 요청과 같은 캐싱 규칙을 따릅니다.
  • 멱등성을 가집니다. 동일한 HEAD 요청을 여러 번 보내도 결과가 동일합니다.

예제:

HEAD /users/123 HTTP/1.1
Host: www.example.com

이 요청은 id가 123인 사용자의 메타데이터를 요청합니다.


6. OPTIONS

용도: 서버에서 지원하는 HTTP 메소드를 확인할 때 사용됩니다. 주로 CORS(Cross-Origin Resource Sharing) 설정을 확인할 때 사용됩니다.

특징:

  • 서버가 어떤 메소드를 지원하는지 응답합니다.
  • 서버의 상태를 변경하지 않습니다.
  • 멱등성을 가집니다. 동일한 OPTIONS 요청을 여러 번 보내도 결과가 동일합니다.

예제:

OPTIONS /users/123 HTTP/1.1
Host: www.example.com

이 요청은 서버가 /users/123 경로에 대해 지원하는 메소드 목록을 요청합니다.


7. PATCH

용도: 서버에서 리소스의 일부를 업데이트할 때 사용됩니다.

특징:

  • 요청 본문에 변경할 부분 데이터를 포함합니다.
  • 지정된 리소스의 일부만 수정합니다.
  • 멱등성을 보장하지 않습니다. 동일한 PATCH 요청을 여러 번 보내면 다른 결과를 초래할 수 있습니다.

예제:

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

{
    "email": "john.newemail@example.com"
}

이 요청은 id가 123인 사용자의 이메일 주소를 업데이트합니다.


멱등성이란?

멱등성(Idempotence)은 특정 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 말합니다.
이는 함수나 연산이 한 번 수행된 이후에 동일한 입력으로 다시 수행되어도 결과가 동일함을 보장합니다.
멱등성은 주로 API 설계에서 중요한 개념으로, 특히 HTTP 메소드에서 자주 언급됩니다.
예를 들어, GET, PUT, DELETE, HEAD, OPTIONS 메소드는 멱등성을 가지지만, POST와 PATCH 메소드는 멱등성을 가지지 않습니다.


HTTP 메소드의 사용 예시

사용자 등록 폼

웹 애플리케이션에서 사용자가 회원가입을 하는 과정을 생각해보세요. 회원가입 폼을 제출하면 서버에 새로운 사용자를 생성해야 합니다.

  1. 폼 제출: 사용자가 회원가입 폼을 작성하고 제출합니다.
  2. POST 요청: 클라이언트는 서버에 새로운 사용자를 생성하는 POST 요청을 보냅니다.
  3. 응답: 서버는 새 사용자를 생성하고, 성공 여부를 응답합니다.
POST /register HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded

username=johndoe&password=secretpassword

사용자 정보 조회

사용자가 자신의 프로필 페이지를 방문하면 서버에서 사용자의 정보를 조회해야 합니다.

  1. GET 요청: 클라이언트는 서버에 사용자의 정보를 요청하는 GET 요청을 보냅니다.
  2. 응답: 서버는 사용자의 정보를 응답으로 보냅니다.
GET /users/123 HTTP/1.1
Host: www.example.com

사용자 정보 수정

사용자가 자신의 이메일 주소를 변경하고 싶어 합니다.

  1. 폼 제출: 사용자가 이메일 변경 폼을 작성하고 제출합니다.
  2. PATCH 요청: 클라이언트는 서버에 사용자의 이메일 주소를 업데이트하는 PATCH 요청을 보냅니다.
  3. 응답: 서버는 이메일 주소를 업데이트하고, 성공 여부를 응답합니다.
PATCH /users/123 HTTP/1.1
Host: www.example.com
Content-Type: application/json

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

사용자 삭제

관리자가 사용자를 삭제하고 싶어 합니다.

  1. DELETE 요청: 클라이언트는 서버에 사용자를 삭제하는 DELETE 요청을 보냅니다.
  2. 응답: 서버는 사용자를 삭제하고, 성공 여부를 응답합니다.
DELETE /users/123 HTTP/1.1
Host: www.example.com

결론

HTTP 메소드는 클라이언트가 서버에 어떤 작업을 요청하는지 명시하는 중요한 요소입니다.
GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH와 같은 다양한 HTTP 메소드는 각각의 특성과 용도를 가지고 있으며, 이를 올바르게 이해하고 사용하는 것이 웹 개발의 중요한 부분입니다.
멱등성의 개념을 포함하여 HTTP 메소드의 동작 방식을 이해하면 웹 애플리케이션의 설계와 구현에 큰 도움이 될 것입니다.

profile
1인개발자가 되겠다
post-custom-banner

0개의 댓글