학습 교재: 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (지은이 : 이동욱, 출판사 : 프리렉)
API (Application Programming Interface)
- 정보들을 주고받는 일종의 형식
- 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단
REST API
REST 형식의 API
- 요청 주소만으로도 어떤 요청인지 파악 가능
- URI: 자원을 구조와 함께 나타내는 형태의 구분자
- CRUD: Create/Read/Update/Delete
서버에 REST API로 요청을 보낼 때는 HTTP 규약에 따라 신호를 전송한다. HTTP로 요청을 보낼 때 사용하는 여러 가지 메소드가 있다.
누구든 각 요청의 의도를 쉽게 파악할 수 있도록 RESTful하게 API를 만들기 위해서는 이들을 목적에 따라 구분해서 사용해야 한다.
- GET: 정보를 조회할 때(Read)
- POST: 새로운 정보를 추가할 때(Create)
- PUT: 정보를 통째로 교체할 때 (Update)
- PATCH: 정보 중 일부를 특정 방식으로 변경할 때 (Update)
(POST, PUT, PATCH는 body에 정보를 담아 보낸다.)
REST API = 어떤 URI에 어떤 메소드를 사용할지 개발자들 사이에 널리 지켜지는 약속
클라이언트(브라우저) <-> 서버(Spring Boot)
- localhost: 내 컴퓨터의 주소
- 8080: 스프링 부트 프로젝트가가 수행되고 있는 포트 번호
라이브러리: 개별 기능
프레임워크: 라이브러리가 모인 기본적인 틀
- Model: 데이터
- View: html, css 등 사용자에게 보이는 화면
- Controller
- Model과 View 간의 상호 동작을 제어
- Model에 명령을 보내 데이터의 상태를 바꾸고, View에 명령을 보내 어떤 화면을 사용자에게 보여줄지 처리
사용 목적
View와 Model 사이에 Controller를 두어 View와 Model의 의존성 제거
- 브라우저가 페이지를 조회하기 위해 url을 입력하거나 링크를 클릭 (요청을 보냄)
- 라우터에서 url을 받아 적절한 Controller로 연결시킴
- Controller에서는 응답을 보내기 위한 로직 처리
- 데이터가 필요하다면 Model에서 데이터를 조회 (쿼리를 통해 DB에서 데이터 조회)
- 어떤 페이지를 사용자에게 보여줄지 렌더링을 해서 데이터와 함께 HTML 문서를 응답
스프링 부트에서의 MVC 패턴
- Model: 데이터
- View:
src/main/resources/templates/
- Controller:
src/main/java/기본패키지/controller

1. 브라우저에서 Spring MVC 웹 어플리케이션에 요청을 보냄
2. Controller는 사용자의 요청을 서비스하기 위해 Model을 호출
3. Model은 데이터베이스에서 가져온 데이터를 반환
4. Controller는 Model이 반환한 결과를 View에 반영
5. 사용자는 서버에서 응답한 결과를 볼 수 있음
스프링/스프링 부트란?
https://velog.io/@smjan27/Spring-Boot-1 포스팅 참조
교재 1, 2장 진행 완료!
1장
- 인텔리제이 설치 및 스프링 부트 프로젝트 생성
- gradle 연동
-> Auto Import 기능 선택하는 옵션이 뜨지 않아 Reload 버튼 클릭하였음

- GitHub에 Commit & Push / gitignore 설정
-> Push 시 403 에러가 발생하여 remote url을 변경 하고 로그인 방법을 '토큰'으로 변경하여 해결
- 최근 깃허브의 로그인 정책이 토큰으로 변경되어 이클립스도 그렇도 인텔리제이도 여러 시행착오를 겪고 있는데 참고하시면 좋을 것 같습니다!
2장
- 단위 테스트: 기능 단위의 테스트 코드 작성
- 테스트 코드 작성
- 롬복(lombok): 자바 개발할 때 자주 사용되는 코드(Getter, Setter, 기본 생성자, toString) 등을 어노테이션으로 자동 생성해주는 라이브러리
- 어노테이션(Annotation)
- 사전적 의미로는 주석
- 자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터의 정보)라고 볼 수 있다.