본문 바로가기
Spring

Spring Day 2 : HTTP

by 우 석 2024. 1. 19.

HTTP(HyperText Transfer Protocol)

데이터를 주고받는 양식을 정의한  전 세계적인 "통신 규약"  

-> 컴퓨터 간 데이터를 주고받을 때 정해둔 약속.
현재 이용되는 대부분의 웹 서버가 HTTP를 기반으로 정해준 규칙에 맞게 데이터를 주고받습니다.
또한, 모든 브라우저는 HTTP 프로토콜을 기본으로 지원합니다.

Request, Response

 

HTTP로 데이터를 주고 받는 방법.
1. 브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 요구(Request)합니다.
2. 서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 실어 응답(Response)해줍니다. 없다면 없는 페이지에 대한 데이터를 반환합니다.
3. 브라우저는 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려줍니다.


HTTP 상태 코드(Status Code)

HTTP 상태 코드는 3자리 숫자로 이루어져 있고, 브라우저와 서버 간의 요청, 응답 과정에서 발생할 수 있는 상황을 나타냅니다. 첫 번째 자리 숫자는 상태 코드의 분류를 나타내는 용도로 사용되며, 나머지 두 자리는 세부적인 정보를 나타냅니다.


1xx (Informational)
1xx 상태 코드는 요청이 수신 되었으며 처리가 계속되고 있음을 나타냅니다.
주로 웹 브라우저와 같은 클라이언트가 서버와의 연결 상태를 확인하기 위해 사용됩니다.


2xx (Successful)
2xx 상태 코드는 클라이언트의 요청이 성공적으로 처리되었음을 나타냅니다.
이는 요청이 성공적으로 처리 되었으며 클라이언트가 요청한 데이터가 서버에서 제공됨을 의미합니다.


3xx (Redirection)
3xx 상태 코드는 클라이언트가 추가적인 조치를 취해야 함을 나타냅니다.
이 상태 코드는 주로 페이지 이동, 리다이렉션 등에 사용됩니다.


4xx (Client Error)
4xx 상태 코드는 클라이언트에 오류가 있음을 나타냅니다.
이 상태 코드는 주로 클라이언트의 잘못된 요청, 인증 오류 등에 사용됩니다.
가장 많이 사용되는 상태 코드는 404입니다. 이는 클라이언트가 요청한 페이지나 리소스를 서버에서 찾을 수 없음을 의미합니다.


5xx (Server Error)
5xx 상태 코드는 서버에 오류가 발생했음을 나타냅니다.
이 상태 코드는 주로 서버의 오류, 서버 과부하 등에 사용됩니다.

가장 많이 사용되는 상태 코드는 500입니다. 이는 서버 내부 오류가 발생함을 의미합니다.

 

HTTP 요청 방식

GET: 서버로부터 어떤 리소스를 가져오기 위해 사용됩니다. 주로 URL을 통해 데이터를 요청하며, 요청 파라미터를 URL의 쿼리 문자열에 포함시켜 전달합니다. 

 

POST: 서버에 데이터를 제출하기 위해 사용됩니다. 주로 HTML 폼을 통해 데이터를 전송하거나, API를 통해 데이터를 전송할 때 사용됩니다. 데이터는 요청의 본문(Payload)에 포함되어 전달됩니다. 

 

PUT: 서버에 새로운 리소스를 생성하거나 기존 리소스를 업데이트하기 위해 사용됩니다. 요청 본문에 업데이트할 데이터를 포함하여 전달합니다. 

 

DELETE: 서버에서 특정 리소스를 삭제하기 위해 사용됩니다. 요청 URL에 삭제할 리소스의 식별자를 포함시켜 전달합니다.

 

Header (추가 데이터. 메타 데이터)

클라이언트(브라우저)가 어떤 페이지를 원하는지, 요청받은 페이지를 찾았는지, 요청받은 데이터를 성공적으로 찾았는지, 어떤 형식으로 데이터를 보낼지 등의 정보를 포함합니다.

 

Payload (데이터. 실제 데이터)

서버가 응답을 보낼 때나 클라이언트가 요청을 할 때에 실제 전송되는 데이터를 말합니다. HTTP에서는 GET 메서드를 제외한 모든 요청 방식에서 Payload를 보낼 수 있다는 약속이 있습니다.

'Spring' 카테고리의 다른 글

Spring Day 6 : JPA  (0) 2024.01.25
Spring Day 5 : IoC(제어의 역전)과 DI(의존성 주입)  (0) 2024.01.24
Spring Day 4 : 3 Layer Architecture  (1) 2024.01.23
Spring Day 3 : MVC  (0) 2024.01.22
Spring Day 1 : Server  (0) 2024.01.18