Spring Basic : 스프링이 어려운 이유 및 HTTP Request

Spring Basic : 스프링이 어려운 이유 및 HTTP Request

728x90

1. 나를 포함한 대부분의 사람들이 스프링을 어렵게 생각하는 이유는 그 복잡성 보다는 기본적인 이해가 없기 때문이다.

2. 현실적으로 스프링을 사용하려는 사람들은 웹 개발을 위한 플렛폼으로 접근한다. 그래서 스프링을 이해하기 위해서 스프링 책을 구매하지만 스프링만 이해해서는 사실 웹 개발을 위한 플렛폼으로 스프링을 사용하기 부족하다.

3. 부족하다는 말의 의미는 엄청나게 많은 양을 추가로 공부해야 하거나 머리가 엄청나게 좋아야 쉽게 사용할 수 있다는 의미는 절대 아니다. 사실 스프링의 원리는 상당히 단순하고 이해를 위해서 그 다지 많은 시간을 필요로 하지 않는다.

4. 스프링 웹개발의 문제는 결국 서블릿에 대한 이해가 부족하기 때문이다. 그리고 서블릿을 이해하기 위해서는 HTTP 프로토콜을 이해해야 한다. 서블릿 역시 단순한 구조를 가졌고, HTTP 프로토콜 역시 엄청 단순하다. 문제는 3가지가 짬뽕이 되면 아무리 쉬운 재료라도 복잡해 보일 수 밖에 없다.

5. HTTP 프로토콜은 아주 단순한 규약이다. HTTP 프로토콜을 이해하려면 TCP/IP를 이해해야 하고 TCP/IP를 이해하려면 MAC과 APR를 알아야 하지만, 스프링 웹개발을 위해서는 그냥 HTTP만 알아도 된다.

5-1 위의 그림이 HTTP 프로토콜의 전부이다. HTTP는 Request와 Response로 구분된다. 보내는 건 Request, 받는 건 Response 다.

6. HTTP Request를 세부적으로 알아보자.

6-1 Request에서 아래의 그림은 반드시 기억해야 할 부분이다. 딱 3개 Requst Line, Headers, Body.

6-2 또 하나 기억할 건 헤더와 바디 사이에 빈줄 하나가 들어간다.

6-3 Request Line은 호출 주소이다. 어떤 명령어로 어디를 찾으라는 부분이다. 필수 항목. 이것만 있어도 동작한다.

6-3-1 명령은 Get, Post 같은 걸 말하고 어디는 자원의 위치 URI가 들어가게 된다.

6-4 Headers는 현재 요청을 이해하기 위해서 보내는 참고자료이다. 중요한 것은 Content-Type 정도이다.

6-4-1 Content-Type은 명령에 포함된 데이터가 어떤 데이터인지 알려 준다.

6-4-2 일반적으로 Content-Type에서 중요한 부분은 application/x-www-form-urlencoded 와 multipart/form-data

6-4-3 application/x-www-form-urlencoded는 Body에 key/value 형태로 데이터를 담는다. 기본값이라 볼 수 있다.

6-4-4 multipart/form-data 그냥 여러 종류의 Content-Type을 한번에 보낸다고 생각하면 끝이다.

6-4-4-1 아래에 WebKitForm 뭐시기로 구분된 여러 개의 데이터 구역이 있는데 이게 영어로 multi parts 이다.

6-4-4-2 보통은 첨부파일이 있는 페이지를 전송할 때 많이 쓴다. 파일과 form을 같이 보내기 위해서이다.

6-5 Body는 명령에 담긴 데이터이다. 예를 들면 파일 내용을 첨부할 수도 있고 Form 데이터를 담을 수도 있다.

6-5-1 이 Body에 담긴 데이터를 어떻게 이해할지를 알려주는 것이 Content-Type이다.

6-6 정리하면 첫줄에 어떤 명령으로 어디에다 호출하는지 그리고, 바디 내용을 해석하기 위한 Header 정보, 보내는 데이터인 Body가 있다는 것만 알면 된다.

728x90

from http://kogle.tistory.com/356 by ccl(A) rewrite - 2021-12-06 12:01:32