HTTP 프로토콜 성장

HTTP
홍윤's avatar
Aug 30, 2024
HTTP 프로토콜 성장

1. HTTP 메소드

💡
HTTP 메소드인 PUT, POST, PATCH, GET, DELETE는 각각 다른 목적으로 사용되며, 그에 따라 body를 사용하는 방식이 다릅니다.

1. POST, PUT, PATCH: Body 사용

이 세 가지 메소드는 클라이언트가 서버로 데이터를 전송할 때 주로 사용되며, 그 데이터를 body에 포함시킵니다.
  • POST: 리소스를 생성하거나 서버에 데이터를 전송할 때 사용됩니다. 예를 들어, 새로운 사용자 계정을 만들 때, 사용자 정보는 body에 포함됩니다.
  • PUT: 지정된 리소스를 완전히 대체하거나 새로 만들 때 사용됩니다. 리소스를 업데이트할 때 모든 데이터를 body에 포함시켜 보내야 합니다.
  • PATCH: 리소스의 일부를 업데이트할 때 사용됩니다. 전체 리소스를 보내지 않고, 변경된 부분만 body에 포함시켜 전송합니다.

2. GET, DELETE: Body 사용 불가

이 두 가지 메소드는 리소스를 요청하거나 삭제할 때 사용되며, body를 사용하지 않는 것이 표준입니다.
  • GET: 서버에서 데이터를 조회할 때 사용됩니다. 예를 들어, 특정 사용자의 정보를 조회할 때, URL에 쿼리 파라미터를 포함할 수 있지만, body에는 데이터를 포함하지 않습니다. GET 요청은 주로 리소스를 조회하는 데 사용되므로, URL에 필요한 모든 정보를 포함시켜야 합니다.
  • DELETE: 서버에서 리소스를 삭제할 때 사용됩니다. 삭제할 리소스를 URL로 지정하며, body에 데이터를 포함하지 않습니다. 일반적으로 삭제할 리소스를 명확하게 식별하는 것이 중요하기 때문에 URL로 해당 리소스를 지정합니다.

요약

  • POST, PUT, PATCH 메소드는 클라이언트가 서버로 데이터를 전송하는 데 사용되며, 데이터는 주로 body에 포함됩니다.
  • GET, DELETE 메소드는 서버에서 리소스를 조회하거나 삭제할 때 사용되며, 이 메소드들은 body를 사용하지 않는 것이 일반적입니다.
HTTP 표준에서는 GET과 DELETE 요청에서 body를 사용하는 것을 권장하지 않으며, 일부 서버는 이러한 요청에 대해 body가 포함된 경우 이를 무시하거나 오류를 반환할 수 있습니다. 이는 RESTful API 설계 원칙을 따르는 데 중요합니다.

 

2. RFC

💡

RFC란?

RFC(Request for Comments)는 인터넷과 관련된 프로토콜, 시스템, 절차 등에 대한 공식적인 기술 문서 시리즈입니다. 이 문서들은 인터넷 엔지니어링 태스크 포스(IETF)와 같은 조직에 의해 작성되고, 인터넷 커뮤니티 내에서 표준화의 과정을 거치게 됩니다.
RFC 문서들은 인터넷에서 널리 사용되는 기술 표준을 정의하거나 기존 기술을 개선하는데 사용됩니다. 각 RFC는 고유한 번호를 부여받으며, 한번 출판되면 그 내용은 변경되지 않습니다. 새로운 버전이 필요할 경우, 새로운 번호의 RFC로 출판됩니다.

RFC 7231 설명

RFC 7231은 HTTP/1.1 프로토콜에 대한 사양을 정의하는 문서 중 하나입니다. 이 문서는 특히 HTTP 메소드, 상태 코드, 헤더 필드 등의 정의와 의미를 다룹니다. HTTP/1.1은 웹에서 서버와 클라이언트 간의 통신을 관리하는 주요 프로토콜입니다.

주요 내용

  1. HTTP 메소드 정의:
      • GET: 서버에서 리소스를 가져옵니다. 안전하고 멱등성(Idempotency)을 가집니다.
      • HEAD: GET과 유사하지만, 응답에 본문이 없습니다.
      • POST: 서버로 데이터를 전송하여 리소스를 생성하거나 처리를 요청합니다.
      • PUT: 지정된 리소스를 대체하거나 새로 생성합니다. 멱등성을 가집니다.
      • DELETE: 지정된 리소스를 삭제합니다. 멱등성을 가집니다.
      • OPTIONS: 서버가 지원하는 메소드를 설명합니다.
      • PATCH: 리소스의 일부를 업데이트합니다.
  1. 상태 코드:
      • 1xx (정보): 요청을 받았고, 처리 중입니다.
      • 2xx (성공): 요청이 성공적으로 처리되었습니다. (예: 200 OK)
      • 3xx (리다이렉션): 요청이 다른 URL로 리다이렉션됩니다. (예: 301 Moved Permanently)
      • 4xx (클라이언트 오류): 클라이언트의 요청이 잘못되었습니다. (예: 404 Not Found)
      • 5xx (서버 오류): 서버가 요청을 처리하는 데 실패했습니다. (예: 500 Internal Server Error)
  1. 헤더 필드:
      • 요청과 응답에 사용되는 여러 헤더 필드의 정의가 포함됩니다. (예: Content-Type, Accept, Authorization 등)
  1. Content Negotiation:
      • 클라이언트와 서버 간의 데이터 교환에서 사용할 데이터 형식, 언어 등을 협상하는 방식에 대해 설명합니다.

요약

RFC 7231은 HTTP/1.1의 주요 기능을 정의하는 문서로, 웹 기반 애플리케이션이 클라이언트와 서버 간에 어떻게 상호 작용하는지에 대한 기본적인 규칙과 구조를 제공합니다. 이는 웹 기술의 근간이 되는 문서 중 하나로, HTTP 메소드와 상태 코드의 의미를 이해하는 데 필수적입니다.
RFC 자체는 인터넷 기술의 발전을 문서화하고 표준화하는 중요한 역할을 하며, RFC 7231은 특히 HTTP 프로토콜에 대한 핵심 문서로 자리 잡고 있습니다.

 

3. fetch api 옵셥 키값

💡
fetch API는 JavaScript에서 서버와 네트워크 통신을 쉽게 할 수 있도록 해주는 기능입니다. fetch 함수는 HTTP 요청을 생성하고, 이 요청에 대한 응답을 비동기적으로 처리할 수 있습니다. fetch 함수는 첫 번째 인자로 요청할 URL을 받고, 두 번째 인자로는 선택적으로 다양한 설정을 포함한 옵션 객체를 전달할 수 있습니다.

fetch API의 옵션 키 값 설명

fetch 함수의 두 번째 인자인 옵션 객체에서는 다양한 HTTP 요청 옵션을 설정할 수 있습니다. 이 옵션을 통해 메소드, 헤더, 본문 등 요청의 세부 사항을 지정할 수 있습니다.
 
  1. method: HTTP 요청 메소드를 지정 (GET, POST, PUT, DELETE 등).
  1. headers: 요청에 포함할 HTTP 헤더를 설정 (Content-Type, Authorization 등).
  1. body: 요청의 본문을 설정 (POST, PUT, PATCH 메소드에서 사용), JSON 데이터를 전송할 경우 문자열로 변환해야 함.
  1. mode: CORS 관련 설정 (cors, no-cors, same-origin).
  1. credentials: 쿠키나 인증 정보를 포함할지 여부 (same-origin, include, omit).
  1. cache: 캐시 사용 방식을 지정 (default, no-store, reload 등).
  1. redirect: 리다이렉션 처리 방식 (follow, manual, error).
이 옵션들을 사용해 네트워크 요청을 상세히 제어할 수 있습니다.

 

4. MIME 타입

💡
MIME 타입"은 Multipurpose Internet Mail Extensions의 약자로, 인터넷에서 파일의 형식을 지정하는 표준 방식입니다. MIME 타입은 주로 웹에서 HTTP 프로토콜을 통해 데이터 전송 시, 전송되는 파일이나 데이터의 종류를 나타내는 데 사용됩니다. 이를 통해 서버와 클라이언트는 전송된 데이터가 어떤 형식인지 알고, 그에 맞는 처리를 할 수 있습니다.

MIME 타입의 구조

MIME 타입은 기본적으로 두 부분으로 구성되며, 슬래시(/)로 구분됩니다:
type/subtype
  • type: 데이터의 대분류를 나타냅니다.
  • subtype: 데이터의 구체적인 형식을 나타냅니다.

주요 MIME 타입 예시

  1. text/
      • text/plain: 일반 텍스트 파일.
      • text/html: HTML 문서.
      • text/css: CSS 파일.
      • text/javascript: JavaScript 파일.
  1. image/
      • image/jpeg: JPEG 이미지.
      • image/png: PNG 이미지.
      • image/gif: GIF 이미지.
      • image/svg+xml: SVG 이미지.
  1. audio/
      • audio/mpeg: MP3 오디오 파일.
      • audio/wav: WAV 오디오 파일.
      • audio/ogg: OGG 오디오 파일.
  1. video/
      • video/mp4: MP4 비디오 파일.
      • video/webm: WebM 비디오 파일.
      • video/ogg: OGG 비디오 파일.
  1. application/
      • application/json: JSON 데이터.
      • application/xml: XML 데이터.
      • application/pdf: PDF 파일.
      • application/zip: ZIP 압축 파일.
      • application/octet-stream: 임의의 바이너리 데이터(파일 다운로드에 주로 사용).
  1. multipart/
      • multipart/form-data: 파일 업로드 시 주로 사용되는 형식으로, 여러 부분으로 나누어진 데이터를 포함할 수 있습니다.

MIME 타입의 역할

  • 브라우저 처리: 웹 브라우저는 MIME 타입을 보고 해당 데이터를 어떻게 처리할지 결정합니다. 예를 들어, text/html 타입을 받으면 브라우저는 이를 HTML 문서로 렌더링합니다.
  • 보안: 잘못된 MIME 타입을 설정하면 악성 스크립트가 실행되는 등의 보안 문제가 발생할 수 있습니다. 따라서 서버에서 올바른 MIME 타입을 지정하는 것이 중요합니다.
  • 파일 전송: 서버가 클라이언트로 파일을 전송할 때, MIME 타입을 통해 클라이언트에게 파일의 형식을 알려줍니다.

요약

MIME 타입은 파일이나 데이터의 형식을 나타내는 표준화된 방식으로, 웹에서 다양한 파일 형식을 처리하고 전송하는 데 중요한 역할을 합니다.
 
 
Share article

Uni