본문 바로가기
Programming/Spring

스프링 프레임워크 기초: HTTP 프로토콜

by vita12321 2023. 8. 7.
728x90
반응형

스프링 프레임워크는 자바 기반의 애플리케이션 개발을 위한 프레임워크입니다. 글에서는 스프링 프레임워크의 근간을 이루는 통신 기초 하나인 HTTP 프로토콜에 대해 자세하게 알아봅니다.


 

1. HTTP 프로토콜 개요

 

HTTP(HyperText Transfer Protocol) 인터넷에서 클라이언트와 서버 간의 요청(request) 응답(response) 관리하는 프로토콜입니다. 클라이언트는 브라우저와 같은 애플리케이션으로, 서버에 정보를 요청하거나 전송할 있습니다. 서버는 클라이언트의 요청에 따라 적절한 데이터를 반환합니다. HTTP 프로토콜을 통해 전송되는 데이터는 주로 텍스트, 이미지, 동영상, 오디오 다양한 형식의 콘텐츠입니다.


 

2. HTTP 작동 방식

 

HTTP 비연결성(Connectionless) 무상태성(Stateless) 특징을 가집니다. 비연결성은 서버와 클라이언트 간의 요청과 응답을 주고받은 후에 연결을 끊어버리는 특성입니다. 무상태성은 요청이 서로 독립적이라는 의미로, 서버는 클라이언트의 이전 요청에 대한 기억을 갖지 않습니다. 이러한 특성 덕분에 서버의 리소스를 효율적으로 관리할 있으나, 상태 정보를 유지해야 하는 경우에는 추가적인 기술, 예를 들어 쿠키(Cookie) 세션(Session) 활용해야 합니다.


 

3. URL (Uniform Resource Locator) 구조

 

HTTP 프로토콜의 핵심 요소 하나인 URL 인터넷상의 자원 위치를 고유하게 표현하며, 다음과 같은 구성을 갖습니다.

 

  • 스킴(Scheme): 자원에 접근하기 위한 프로토콜을 명시합니다. 일반적으로 http 또는 https를 사용합니다.
  • 호스트(Host): 자원을 제공하는 서버의 도메인 네임이나 IP 주소입니다.
  • 포트(Port): 서버에서 자원을 제공하는 네트워크 서비스의 포트 번호입니다. 일반적으로 HTTP는 80 포트, HTTPS는 443 포트를 사용합니다.
  • 경로(Path): 서버에서 자원의 위치를 나타내는 계층적 구조입니다. 디렉터리와 파일 구조로 이루어져 있습니다.
  • 쿼리(Query): 클라이언트가 서버에 보내는 추가 정보로, 키-값 쌍으로 구성되며 "&" 기호로 구분합니다.
  • 프래그먼트(Fragment): 자원에서 특정 위치를 가리키는 앵커를 지정합니다.

 

4. HTTP 메서드(Method)

 

HTTP 프로토콜에서는 클라이언트가 서버에 어떤 작업을 요청하는지를 나타내는 여러 가지 메소드가 있습니다. 주로 사용되는 메소드들은 아래와 같습니다.

 

  • GET:
    서버에서 데이터를 조회(읽기)하는 데 사용합니다. URL에 쿼리 파라미터를 통해 추가 정보를 전달할 수 있습니다.

  • POST:
    서버에 새로운 데이터를 생성(쓰기)하거나 업데이트(갱신)하는 데 사용합니다. 데이터는 요청 본문(Body)에 포함되어 전송됩니다.

  • PUT:
    서버에서 특정 데이터를 수정(갱신)하는 데 사용합니다. 전체 데이터를 덮어씁니다. 데이터는 요청 본문에 포함되어 전송됩니다.

  • PATCH:
    서버에서 특정 데이터를 일부분만 수정(갱신)하는데 사용합니다. 데이터는 요청 본문에 포함되어 전송됩니다.

  • DELETE:
    서버에서 특정 데이터를 삭제하는 데 사용합니다.

 

5. HTTP 상태 코드(Status Code)

 

HTTP 응답에는 클라이언트의 요청 처리 결과를 나타내는 상태 코드가 포함되어 있습니다. 상태 코드는 자리 숫자로 표현되며, 자리의 의미는 아래와 같습니다.

 

  • 1xx (정보): 요청을 받았으며 프로세스를 계속 진행 중입니다.

  • 2xx (성공): 요청이 성공적으로 처리되었습니다.

  • 3xx (리다이렉션): 요청을 완료하기 위해서는 추가 작업이 필요합니다.

  • 4xx (클라이언트 에러): 클라이언트의 요청이 올바르지 않거나 처리할 수 없습니다.

  • 5xx (서버 에러): 서버가 요청을 처리하는 과정에서 에러가 발생했습니다.

 

주요 상태 코드는 다음과 같습니다.

 

  • 200 (OK): 요청이 성공적으로 처리되었습니다.

  • 201 (Created): POST 요청에 의해 새로운 데이터가 생성되었습니다.

  • 204 (No Content): 요청이 성공적으로 처리되었으나, 반환할 데이터가 없습니다.

  • 400 (Bad Request): 클라이언트의 요청에 오류가 있어 처리되지 않았습니다.

  • 401 (Unauthorized): 인증이 필요한 요청입니다. 일반적으로 로그인이 필요한 경우 이 상태 코드가 반환됩니다.
  •  
  • 403 (Forbidden): 클라이언트가 요청한 자원에 대해 접근 권한이 없습니다.

  • 404 (Not Found): 클라이언트가 요청한 자원을 찾을 수 없습니다.

  • 500 (Internal Server Error): 서버에서 요청을 처리하는 과정에서 내부 오류가 발생했습니다.

 

6. HTTP 요청(Request) 구성

 

HTTP 요청은 주로 메서드,경로(path), 버전, 헤더(header), 본문(body)으로 구성됩니다. 헤더에는 요청에 대한 추가 정보, 예를 들어 컨텐츠 타입(Content-Type)이나 인증 정보(Authorization) 등이 포함될 있습니다. 요청 본문에는 일반적으로 JSON, XML, (form) 데이터 등이 포함됩니다.


 

7. HTTP 응답(Response) 구성

 

HTTP 응답은 상태 코드, 상태 메시지, 헤더, 본문으로 구성됩니다. 헤더에는 응답에 대한 추가 정보, 예를 들어 컨텐츠 타입(Content-Type)이나 쿠키(Cookie) 등이 포함됩니다. 응답 본문에는 JSON, XML, HTML 요청에 따른 콘텐츠가 포함됩니다.


 

8. 스프링 프레임워크에서의 HTTP 처리

 

스프링 프레임워크에서는 애플리케이션의 요청 응답 처리를 위해 여러 계층으로 구성됩니다. 대표적으로 컨트롤러(Controller), 서비스(Service), 리포지토리(Repository) 등의 계층이 있습니다. 컨트롤러는 클라이언트로부터의 HTTP 요청을 받아 처리하고, 결과를 응답으로 전달합니다. 서비스 계층에서는 비즈니스 로직을 처리하며, 데이터의 조회 저장과 같은 작업은 리포지토리 계층에서 수행합니다.


 

9. 요약

 

스프링 프레임워크 애플리케이션 개발의 기반이 되는 HTTP 프로토콜은 클라이언트와 서버 간의 통신을 관리합니다. HTTP 프로토콜의 기본 개념을 이해하고, 주요 메소드와 상태 코드 등을 활용할수록 애플리케이션 개발에 있어 효력적이고 안정적인 결과물을 만들어낼 있게 됩니다.

728x90
반응형