클라이언트(브라우저)에서 서버로 정보를 요청하는 과정을 간략하게 표현한 그림
사용자는 브라우저를 이용하여 서버에 정보를 요청하고 응답을 받는다.
웹 서버란?
웹 서버는 인터넷을 통해 HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해주는 통신을 하는 컴퓨터이다.
오늘날 우리가 자주 사용하는 이메일이나 SNS 등 대부분의 서비스는 웹 서버를 통해 우리가 사용할 수 있게 되었다.
1. 브라우저를 통해 HTTP Request로 웹사이트를 웹서버에 요청한다.
2. 이후 웹서버는 요청을 승인하고 HTTP Response를 통해 웹사이트 데이터를 브라우저에 전송한다.
3. 마지막으로 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려내는 일을 한다.
* 기본적으로 브라우저가 웹서버에 요청을 할때는 항상 GET method로 요청하게 된다.
API란?
다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다. 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다.
인터페이스(Interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우 접점이나 경계면을 의미한다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.
쉽게 표현하면 API는 하나의 "약속"이다.
서로 다른 애플리케이션이 약속한 방식의 API 요청을 수행하면 정해진 결과물을 반환한다.
주문을 받으면 해당 주문의 음식을 가져다 주는 식당의 점원이라고 비유적으로 이해하면 좋다.
RESTful API란?
Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.
REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다.
REST 아키텍처 스타일을 따르는 API를 REST API라고 한다.
REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다
일반적으로 쉬운 말로 바꾸면, 여러분 서버의 api가 적절하게 http를 준수하며 잘 설계되어있으면 RESTful 하게 설계되어 있다고 생각하면 좋다.
Apache Tomcat이란 무엇일까?
브라우저에서 URL을 입력하여 어떠한 페이지를 요청했을 때 HTTP의 요청을 받아들여 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 하는 것이 Web Server이다.
웹 서버의 역할을 크게 2가지로 구분해보면
1. 정적인 콘텐츠 즉, 이미 완성이 되어있는 HTML과 같은 문서를 브라우저로 전달한다.
2. 브라우저로부터 '로그인하여 MyPage를 요청'과 같은 동적인 요청이 들어왔을 때 웹 서버 자체적으로 처리하기 어렵기 때문에 해당 요청을 WAS에 전달한다. 종류로는 Apache, Nginx 등이 있다.
WAS는 웹 서버와 똑같이 HTTP 기반으로 동작이 된다.
웹 서버에서 할 수 있는 기능 대부분을 WAS에서도 처리할 수 있다.
WAS를 사용하면 로그인, 회원가입을 처리하거나 게시물을 조회하거나 정렬하는 등의 다양한 로직들을 수행하는 프로그램을 동작시킬 수 있다. 종류로는 Tomcat, JBoss 등이 있다.
Tomcat은 동적인 처리를 할 수 있는 웹 서버를 만들기 위한 웹 컨테이너 이다.
Apache Tomcat이란 Apache와 Tomcat이 합쳐진 형태로 정적인 데이터 처리와 동적인 데이터 처리를 효율적으로 해줄 수 있다.
SpringBoot와 Spring
Spring 프레임워크는 2004년에 1.0이 등장한 이후 20년 가까이 사랑받으며 계속해서 업그레이드 해온 현재는 Spring 6.0이 등장한 아주 오래되고 강력한 프레임워크다.
Spring 프레임워크는 AOP, IoC/DI 등과 같은 아주 강력한 핵심 기능들을 가지고 있다.
하지만 이러한 핵심 기능들을 사용하기 위해서는 너무나도 많은 xml 설정들이 필요했다.
이러한 불편한 점들을 개선하기 위해 2014년 SpringBoot가 등장했다.
SpringBoot는 기존의 xml 설정 대신 Java의 애너테이션 기반의 설정을 적극적으로 사용하고 있기 때문에 무겁고 작성하기 힘들던 xml 대신에 애너테이션을 사용하여 아주 간편하게 설정할 수 있다.
기본적으로 개발에 필요한 설정 정보들을 일반적으로 많이 사용하는 설정 값을 default로 하여 자동으로 설정해주고 있다.
또한 외부 라이브러리나 하위 프레임워크들의 의존성 관리가 매우 쉬워졌다.
기존에는 외부 라이브러리와 프레임워크를 사용하기 위해서 각각의 버전들의 호환성을 직접 확인해가면서 의존성들을 설정해야 했지만 SpringBoot에서는 spring-boot-starter-web 처럼 필요한 외부 라이브러리들과 프레임워크들을 의존성에 맞게 starter로 묶어서 제공해준다.
따라서 이전처럼 각각의 버전 호환성을 직접 확인할 필요가 없어졌다.
마지막으로 SpringBoot의 강력한 점중 하나가 바로 내장 Apache Tomcat이다.
Spring 프레임워크에서는 서버를 실행시키기 위해 Apache Tomcat을 직접 다운로드 받고 설정하고 프로젝트에 삽입했어야 했다.
이러한 불편함을 해결하기 위해 SpringBoot에서는 기본적으로 starter-web dependency를 설정하면 자동으로 내장형 Apache Tomcat을 제공해 준다.
말 그대로 Apache Tomcat이 내장되어있기 때문에 개발자가 따로 다운로드 받고 설정하고 삽입할 필요없이 바로 사용할 수 있게 되었다.
Postman이란?
아래 주소로 들어가서 Postman을 다운로드 받는다.
https://www.postman.com/downloads/
Download Postman | Get Started for Free
Try Postman for free! Join 30 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.
www.postman.com
Postman이란 API 개발을 빠르고 쉽게 구현할 수 있도록 도와주는 소프트웨어 플랫폿이다.
API는 하나의 "약속" 이라 배웠다.
우리가 API 즉, 약속에 맞춰서 HTTP 요청을 서버에 보내고 응답을 확인해봐야 우리가 만든 서버가 제대로 동작하는지 확인할 수 있다.
이러한 확인 작업을 간편하게 할 수 있도록 도와주는 플랫폼 중 하나가 Postman이다.
Hello World!
spring-prepare 프로젝트와 Postman을 사용하여 "Hello World!"를 출력하는 API를 만들고 테스트 해보겠다.
API 테이블은 API들을 한눈에 확인하고 협업하는 개발자들과 소통하기 위해 작성하는 일종의 표이다.
1. API 요청을 받아서 처리하기 위해 HelloController를 만들어보겠다.
com.sparta.springprepare.controller 패키지를 생성한다.
생성된 패키지 안에 HelloController Java 파일을 만든다.
HelloController 파일에 해당 코드를 작성한다.
SpringPrepareApplication 파일을 실행한다.
Postman 프로그램을 실행한 후 New를 클릭한다.
HTTP 선택
URL에 http://localhost:8080/api/hello 를 입력한 후 Send 클릭을 하면 밑에 Hello world!가 출력된 것을 확인할 수 있다.
해석을 해보자면 현재 서버는 내 컴퓨터에 있기 때문에 URL에 localhost가 들어간 것이다.
8080은 포트번호이며 Tomcat은 기본적으로 8080 포트를 사용하기 때문이다.
'Spring 입문주차 > 1주차' 카테고리의 다른 글
6. MySQL 설치하기 (0) | 2024.08.12 |
---|---|
5. Lombok과 application.properties (0) | 2024.08.11 |
4. 테스트 코드 (0) | 2024.08.10 |
3. HTTP란 무엇일까? (0) | 2024.08.10 |
1. 그레이들이란 무엇인가(버전, 라이브러리와 관련됨) (0) | 2024.08.09 |