본문 바로가기
💻 개발/Spring

HTTP - Spring MVC

by 컴쏘 2023. 12. 4.

요청과 응답

Q. 사용자가 브라우저를 통해 Nextstep 페이지에 들어가는 동안 어떤 과정을 거칠까?

A.

Client - Server

  • 사용자는 브라우저 주소창에 입력 Nextstep 사이트의 주소를 입력
  • 브라우저는 주소를 인식해서 어디에 요청을 보낼지 판단하고 해당 서버에 요청을 보냄
  • 서버는 여러 절차를 거친 뒤 요청을 한 브라우저에 요청을 받은 것을 응답
  • 브라우저는 서버로부터 받은 정보를 이용하여 페이지를 만들어 사용자에게 보여줌

우리는 서버에 요청했다고 하고 클라이언트에 응답했다고 함

  • 브라우저가 아니더라도 터미널로 확인 가능 (개발자 도구 이용)
    • 서버와 클라이언트간에 어떤 요청과 응답이 오갔는지는 개발자 도구를 통해 확인 가능
    • 내용을 살펴보면, 특별한 양식이 있는 것을 확인 가능 (해당 양식을 HTTP라고 부름)

HTTP

HTTP

HTTP를 알아야 하는 이유는

HTTP 형식에 맞는 요청을 받을 때

HTTP 형식에 맞는 응답을 내려주는 애플리케이션을 만들기 위해서 이다.

  • HTTP는 정말 많은 규약이 있고 종류가 있다.
  • 그 모든 것을 알려고 하기 보다는 지금 당장 알 수 있는 것들을 천천히 하나씩 알아가는 것이 효율적

HTTP 설명

1) URL (Uniform Resource Locator)

URL 구조

  • URI (Uniform Resource Identifier)라고도 함
  • URI가 URL보다 더 상위 개념이지만 현재 혼용해서 사용하고 있음. 같은 것으로 이해해도 무방
  • URL은 스킴(scheme), 호스트명, 경로명으로 구성됨
    • 위 예에서 스킴은 http, 호스트 명은 wooteco.com, 경로명은 webcontents/index.html

 

a) 스킴 (scheme)

스킴은 리소스를 획득하기 위한 방법을 나타냄. 웹 애플리케이션에서는 대부분의 경우 HTTP 프로토콜을 사용.

HTTP 프로토콜 이외에 다음과 같은 프로토콜이 있음

  • https : 암호화된 http 통신을 나타내는 스킴 
  • mailto : 이메일의 수취인을 나타내는 스킴
  • ftp : FTP 프로토콜을 통한 파일 획득을 나타내는 스킴 
  • file : 파일 시스템 속의 파일이나 디렉토리를 참조하기 위한 스킴

 

b) 호스트명

리소스가 존재하는 호스트(컴퓨터)의 이름. 인터넷을 비롯한 컴퓨터 네트워크의 세계에서 네트워크에 접속되어 다른 컴퓨터로부터 요구를 받고 처리한 결과를 되돌려주는 컴퓨터를 일반적으로 호스트 컴퓨터라고 함. 호스트 명은 호스트 컴퓨터의 이름을 가리킴

 

c) 경로명

호스트 명에서 지정된 컴퓨터 상의 리소스 위치

www.wootecto.com/webcontents/index.html
  • 위 경로에는 webcontents 하위에 있는 index.html 이라는 파일을 나타냄
  • 이처럼 URL을 이용하여 도메인 → 컴퓨터 → 디렉토리 → 파일명과 같이 계층적으로 리소스의 위치를 지정할 수 있어 인터넷 상에서 리소스의 위치를 나타낼 수 있음

 

2) HTTP Request Line

HTTP Request

  • 메서드
    • 요청의 종류를 나타냄. 여기서는 GET, 즉 ‘URI’에서 지정한 정보를 보내달라는 의미
    • 메서드에는 그 밖에도 몇 가지 정의돼 있는데, 웹 브라우저에서 웹 서버로 송신되는 요청의 대부분은 GET 메서드에 따른 요청
  • URI (Uniform Resource Identifier)
    • GET 메서드는 단순히 정보를 보내달라는 의미에 불과하며, URI는 무엇을 원하는 지에 대해 나타냄
    • 일단 URL과 URI는 거의 같은 것이라고 생각해도 무방
  • HTTP 버전
    • 버전에 따라 이용할 수 있는 메서드의 종류와 요청 헤더의 종류가 달라지므로 어떤 버전에 따른 요청인지 저장한 것
    • 두 번째 줄 이후의 나머지 부분은 메시지 헤더라고 하며, 요청의 부가적인 정보를 나타냄
  • Accept
    • 웹 클라이언트가 받을 수 있는 데이터의 종류를 표시
    • 데이터의 종류는 Content-Type이라는 형식으로 표시되며, 클라이언트에서 받을 수 있는 Content-Type을 콤마로 구분해서 지정
    • 이렇게 정보를 표현함으로써 Accept 필드를 참조하면 웹 서버는 불필요한 정보를 송신하지 않아도 될 가능성이 있는 것
  • Accept-Language
    • 웹 클라이언트가 받을 수 있는 자연 언어의 종류를 나타냄
    • 자연 언어는 사람이 사용하는 언어를 가리킴
    • 여기서는 en-us 되어 있으므로 영어를 나타냄
  • User-Agent
    • 이용중인 웹 브라우저의 종류와 버전을 나타냄
  • Host
    • 요청을 보낸 곳의 호스트 명과 포트 번호를 지정

 

3) HTTP response

HTTP response

  • 상태라인
    • HTTP 요청과 마찬가지로 HTTP 응답에서도 첫번째 줄이 가장 중요하며, 이것을 상태라인이라고 함
    • HTTP 상태라인도 구성은 간단
    • HTTP 버전과 상태코드, 응답 구문 세 부분으로 나뉨

상태라인

HTTP 버전은 요청에서와 마찬가지로 사용하는 프로토콜의 버전을 나타냄. 중요한 것은 상태코드로 이 부분을 보면 요청이 성공했는지, 실패했는지 쉽게 알 수 있음.

ex. 200 : 요청이 성공해 정상적인 응답이 돌아왔음을 의미

 

대표적인 HTTP status code

  • 200 : OK
  • 201 : Created
  • 302 : Found (HTTP 1.0)
  • 304 : Not Modified
  • 401 : Unauthorized
  • 404 : Not Found
  • 500 : Internal Server Error
  • 503 : Service Unavailable

Status Code 단위별 의미는?

  • 2xx : 성공 / 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리
  • 3xx : 리다이렉션 완료 / 클라이언트는 요청을 마치기 위해 추가 동작이 필요
  • 4xx : 요청 오류 / 클라이언트에 오류가 있음
  • 5xx : 서버 오류 / 서버가 유효한 요청을 명백하게 수행하지 못함

 

  • 메시지 헤더
    • 상태라인에 이어서 나오는 것이 메시지 헤더로 두 번째 줄부터 빈줄까지 계속됨
    • 메시지 헤더는 HTTP 요청의 메시지 헤더와 같은 형식으로, 응답에 관한 부가적인 정보가 들어있음
  • 메시지 본문
    • 웹 브라우저는 메시지 본문에 있는 HTML을 해석해 화면에 표시
    • HTML는 텍스트 형식이므로 우리가 읽을 수 있는 형식으로 메시지 본문에 저장되어있음
    • 그러나 GIF, JPEG 형식의 이미지 파일을 요청했을 경우, 마찬가지로 그 데이터가 메시지 본문에 들어감

 

4) HTTP method

HTTP method

주로 많이 사용되는 메소드 : GET, POST

  • GET : Select 적인 성향, GET은 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도, 서버의 값이나 상태등을 바꾸지 않음, ex) 게시판 목록
  • POST : 서버의 값이나 상태를 바꾸기 위해서 사용, 글쓰기를 하면 글의 내용이 DB에 저장되고 수정하면 DB 값이 수정됨

 

BDD 동아리 Spring 스터디 공부 자료를 참고하였습니다. 
우테코의 일부 코치님들이 진행하는 프로젝트에서 지원해주셨습니다. 

'💻 개발 > Spring' 카테고리의 다른 글

MVC Response - Spring MVC  (0) 2023.12.05
Spring Annotation MVC - Spring MVC  (0) 2023.12.05
API Web Application 만들기 - Spring MVC  (0) 2023.12.04
Gradle 프로젝트 구축하기  (0) 2023.12.04
Framework와 Project  (0) 2023.11.29