스터디 -Http

이강민·2024년 8월 22일
0

커널360

목록 보기
31/56
post-thumbnail

HTTP란?

HTTP(HyperText Transfer Protocol)는 웹 상에서 클라이언트와 서버 간에 데이터를 주고받기 위해 사용되는 프로토콜입니다. 웹 브라우저(클라이언트)가 웹 서버에 요청을 보내면, 서버는 요청에 따라 적절한 응답을 반환합니다. HTTP는 상태를 유지하지 않는(stateless) 프로토콜로, 각 요청은 독립적이며 이전 요청과 연관되지 않습니다. 이를 보완하기 위해 쿠키, 세션 등의 방법이 사용됩니다.

HTTP Method란?

HTTP Method는 클라이언트가 서버에 요청을 보낼 때 사용하는 요청의 종류를 정의하는 방식입니다. 각 메소드는 특정한 작업을 지시하며, 서버는 해당 메소드에 따라 요청을 처리합니다.

주요 HTTP 메소드와 예시

1. GET

  • 설명: 서버로부터 데이터를 조회하기 위해 사용합니다. 서버의 데이터를 변경하지 않으며, 주로 리소스를 가져오거나 검색할 때 사용됩니다.

  • 예시: 사용자의 프로필 정보를 조회하는 요청

    GET /users/123 HTTP/1.1
    Host: example.com
    Accept: application/json
  • Request Parameters: GET 요청은 URL에 쿼리 스트링(Query String)으로 데이터를 전달할 수 있습니다.

    예시: /users/123?include=posts

  • Headers: 요청 헤더를 통해 클라이언트가 수용 가능한 응답의 형식(예: application/json)을 지정할 수 있습니다.

2. POST

  • 설명: 서버에 데이터를 제출하여 새로운 리소스를 생성하거나 특정 작업을 수행합니다. 주로 폼 데이터를 전송하거나 데이터베이스에 새로운 항목을 추가할 때 사용됩니다.

  • 예시: 새로운 블로그 게시글을 작성하는 요청

    POST /posts HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 85
    
    {
      "title": "My New Post",
      "content": "This is the content of my new post.",
      "author_id": 123
    }
  • Request Body: POST 요청은 데이터를 요청 본문(Body)에 포함시켜 전송합니다. 본문은 일반적으로 JSON, XML, 또는 폼 데이터 형식으로 전송됩니다.

  • Headers: 요청 헤더를 통해 본문의 형식(예: application/json)을 지정할 수 있습니다.

3. PUT

  • 설명: 서버의 기존 리소스를 업데이트하거나, 리소스가 존재하지 않는 경우 새로운 리소스를 생성합니다.

  • 예시: 사용자의 정보를 업데이트하는 요청

    PUT /users/123 HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 59
    
    {
      "name": "John Doe",
      "email": "john.doe@example.com"
    }
  • Request Body: PUT 요청은 업데이트할 데이터를 요청 본문에 포함시켜 전송합니다. 전체 리소스를 교체하는 방식으로 동작합니다.

  • Headers: 본문 형식과 관련된 정보를 지정하기 위해 사용됩니다.

4. DELETE

  • 설명: 서버에서 지정된 리소스를 삭제합니다.

  • 예시: 특정 게시글을 삭제하는 요청

    DELETE /posts/456 HTTP/1.1
    Host: example.com
  • Request Parameters: DELETE 요청은 일반적으로 URL에 리소스의 식별자를 포함시켜 삭제할 대상을 지정합니다.

  • Headers: 필요한 경우 인증 토큰을 포함하거나, 요청과 관련된 기타 정보를 전달할 수 있습니다.

5. PATCH

  • 설명: 리소스의 일부만을 수정할 때 사용합니다. PUT과 달리 리소스의 일부분만 업데이트할 수 있습니다.

  • 예시: 사용자의 이메일 주소만을 수정하는 요청

    PATCH /users/123 HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 34
    
    {
      "email": "new.email@example.com"
    }
  • Request Body: PATCH 요청은 변경할 데이터만을 포함하여 전송합니다.

  • Headers: 본문의 형식을 지정하기 위해 사용됩니다.

6. HEAD

  • 설명: GET과 유사하지만, 응답 본문을 제외한 헤더 정보만 요청합니다. 주로 리소스의 존재 여부나 크기 등을 확인하기 위해 사용됩니다.

  • 예시: 특정 리소스의 존재 여부를 확인하는 요청

    HEAD /users/123 HTTP/1.1
    Host: example.com
  • Headers: GET 요청과 동일한 방식으로 동작하지만, 응답에 본문이 포함되지 않습니다.

7. OPTIONS

  • 설명: 특정 리소스에서 사용할 수 있는 HTTP 메소드를 반환받기 위해 사용됩니다.

  • 예시: 서버가 지원하는 메소드 확인 요청

    OPTIONS /posts/456 HTTP/1.1
    Host: example.com
  • Headers: 요청 헤더를 통해 서버에 전달될 수 있는 요청 메소드와 관련된 정보를 받을 수 있습니다.

HTTP Method 규칙

  • 안전성(Safety): 특정 HTTP 메소드는 서버의 상태를 변경하지 않아야 합니다. 예를 들어, GETHEAD 메소드는 서버의 데이터에 영향을 주지 않아야 하므로 안전한 메소드입니다.
  • 멱등성(Idempotency): 멱등한 메소드는 동일한 요청을 여러 번 보내도 서버의 상태가 변하지 않아야 합니다. 예를 들어, PUT, DELETE 메소드는 처음 호출과 이후 동일한 요청 호출에서 서버 상태의 변화가 동일해야 합니다.
  • 캐시 가능성(Cacheability): 특정 메소드는 클라이언트가 응답을 캐싱할 수 있도록 허용됩니다. 일반적으로 GET 메소드는 캐시가 가능하지만, POST 메소드는 기본적으로 캐시되지 않습니다.

HTTPS란?

HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안 기능을 추가한 프로토콜입니다. HTTPS는 데이터를 암호화하여 클라이언트와 서버 간의 통신이 제3자에 의해 도청, 변조되지 않도록 보호합니다. HTTPS는 SSL(Secure Sockets Layer)이나 TLS(Transport Layer Security) 프로토콜을 사용하여 암호화를 구현합니다.

HTTPS의 주요 특징:

  • 기밀성(Confidentiality): 통신 내용이 암호화되어 제3자가 내용을 볼 수 없습니다.
  • 무결성(Integrity): 데이터가 전송 중에 변경되지 않았음을 보장합니다.
  • 인증(Authentication): 클라이언트가 통신하고 있는 서버가 신뢰할 수 있는 서버임을 보장합니다.

HTTPS는 주로 로그인 페이지, 결제 페이지와 같이 민감한 정보가 오가는 페이지에서 사용됩니다.

위 설명은 각 HTTP 메서드의 기능과 예시, 그리고 요청 파라미터와 헤더에 대한 추가 정보를 포함하여 HTTP와 HTTPS에 대한 전체적인 이해를 돕기 위한 내용입니다.

profile
AllTimeDevelop

0개의 댓글

관련 채용 정보