스프링부트 11

11장 HTTP와 REST 컨트롤러

11.1 REST API의 동작 이해하기클라이언트가 보내는 HTTP 요청 메시지의 첫 줄에는 시작 라인인 요청 라인이 있고, 그 아래에는 헤더와 본문이 있습니다. 응답 메시지의 첫 줄에도 시작 라인인 상태 라인이 있고, 그 아래 헤더와 본문이 있습니다. 응답으로 오는 상태 코드는 요청이 성공했을 때는 200, 데이터 생성을 완료했을 때는 201, 요청한 정보를 찾을 수 없을 때는 404, 서버에 오류가 났을 때는 500을 반환합니다. 이러한 상태 코드는 100~500번대까지 5개 그룹으로 나뉘어 있습니다. REST API의 응답 표준으로 사용하는 JSON은 키와 값의 쌍으로 된 속성으로 데이터를 표현합니다. JSON의 값으로 또 다른 JSON 데이터나 배열을 넣을 수도 있습니다.{ "id": 1, ..

스프링부트 2025.02.07

10장 REST API와 JSON

10.1 REST API와 JSON의 등장 배경웹 서비스를 사용하는 클라이언트에는 웹 브라우저만 있는 게 아닙니다. 스마트폰, 스마트워치, 태블릿, CCTV, 각종 센서 등이 모두 클라이언트입니다. IT 기기의 발전에 따라 지금도 수많은 클라이언트가 만들어지고 있습니다. 서버는 이러한 모든 클라이언트의 요청에 응답해야 합니다. 웹 브라우저뿐만 아니라 어떤 기기가 와도 기기에 맞는 뷰 페이지(view1, view2, ...)를 응답해야 합니다. 그런데 이런 기기들은 앞으로 끝없이 나올텐데 그때마다 서버가 일일이 대응하기란 쉽지 않습니다. 이때 바로 REST API를 사용하는 것입니다. REST API(Representational State Transfer API)는 서버의 자원을 클라이언트에 구애받지 않..

스프링부트 2025.02.04

9장 CRUD와 SQL 쿼리 종합

9.1 JPA 로깅 설정하기서버에서 데이터의 생성, 조회, 수정, 삭제 등을 요청하면 JPA의 리파지터리가 DB에 해당 요청을 전달합니다. 요청을 받은 DB는 자신의 언어, 즉 SQL로 쿼리를 작성해 테이블 속 데이터를 관리합니다. 여기서 쿼리(query)란 DB에 정보를 요청하는 구문을 말하는데, 데이터의 생성은 INSERT 문, 조회는 SELECT 문, 수정은 UPDATE 문, 삭제는 DELETET 문을 사용합니다. 이 장에서는 서버의 CRUD 수행에 따른 DB의 SQL 쿼리를 분석해 보겠습니다. 이를 위해 JPA 로깅 설정을 합니다. 로깅(logging)이란 시스템이 작동할 때 당시의 상태와 작동 정보를 기록하는 것을 말합니다. JPA의 로깅 설정은 resources > application.pro..

스프링부트 2025.01.23

8장 게시글 삭제하기: Delete

8.1 데이터 삭제 과정게시판에서 글을 삭제하는 과정은 다음 순서로 이루어집니다. 1. 클라이언트가 HTTP 메서드로 특정 게시글의 삭제를 요청합니다.2. 삭제 요청을 받은 컨트롤러는 리파지터리를 통해 DB에 저장된 데이터를 찾아 삭제합니다. 이 작업은 기존 데이터가 있는 경우에만 수행됩니다.3. 삭제가 완료됐다면 클라이언트를 결과 페이지로 리다이렉트합니다. 그런데 결과 페이지로 리다이렉트할 때 클라이언트에 삭제 완료 메시지도 같이 띄워 주면 더 좋겠죠? 이를 위한 클래스가 바로 RedirectAttributes입니다. RedirectAttributes 객체의 addFlashAttribute()라는 메서드는 리다이렉트된 페이지에서 사용할 일회성 데이터를 등록할 수 있습니다.8.2 데이터 삭제하기서버를 실..

스프링부트 2025.01.23

7장 게시글 수정하기: Update

7.1 데이터 수정 과정게시판에 작성한 글을 수정하려면 해당 글을 불러와 수정할 수 있는 입력 상태로 만들어야 합니다. 그다음 내용을 입력하고 다시 전송하면 DB에 반영돼 최종적으로 수정됩니다. 데이터 수정 실습은 크게 2단계로 나누어집니다. 1. 만들고 기존 데이터 불러오기2. 데이터를 수정해 DB에 반영한 후 결과를 볼 수 있게 로 리다이렉트하기 먼저 1단계가 어떻게 동작하는지 살펴보겠습니다.(1) 에서 [Edit] 버튼을 클릭합니다.(2) 요청을 받은 컨트롤러는 해당 글의 id로 DB에서 데이터를 찾아 가져옵니다.(3) 컨트롤러는 가져온 데이터를 뷰에서 사용할 수 있도록 모델에 등록합니다.(4) 모델에 등록된 데이터를 에서 보여 줍니다. 그러면 사용자가 내용을 수정할 수 있는 상태가 됩니다. 2단..

스프링부트 2025.01.22

6장 게시판 내 페이지 이동하기

6.1 링크와 리다이렉트란보통 웹 게시판을 보면 처음에 가 뜹니다. 여기에서 [제목]을 클릭하면 해당 글의 로 이동하고, [글쓰기] 버튼을 클릭하면 . 새 글을 작성하는 로 이동합니다. 만약 에 있다면 [목록] 버튼을 클릭해 로 돌아갈 수 있습니다. 에 있다면 새 글을 작성하지 않고 [목록] 버튼을 클릭해 돌아갈 수 있고, [전송하기] 버튼을 클릭해 작성한 글의 를 볼 수도 있습니다. 이 장에서는 이러한 게시판 내 페이지 이동을 구현해 봅시다. 앞에서 만든 /articles, 즉 목록 페이지에 링크와 리다이렉트라는 기능을 이용해 구현합니다. 링크(link)란 미리 정해 놓은 요청을 간편히 전송하는 기능으로, 보통 페이지 이동을 위해 사용합니다. HTML의 태그 혹은 태그로 작성하며, 클라이언트가 링크..

스프링부트 2025.01.20

5장 게시글 읽기: Read

5.1 데이터 조회 과정웹 페이지에서 게시글을 등록하면 서버를 통해 DB에 저장됩니다. 이렇게 DB에 저장된 데이터를 웹 페이지에 출력하는 과정은 앞서 배운 다양한 요소 간 상호 작용으로 이로어집니다. 1. 사용자가 데이터를 조회해 달라고 웹 페이지에서 URL 요청을 보냅니다. 2. 서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달합니다.3. 리파지터리는 정보를 가지고 DB에 데이터 조회를 요청합니다.4. DB는 해당 데이터를 찾아 이를 엔티티로 반환합니다.5. 반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달됩니다.6. 최종적으로 결과 뷰 페이지가 완성돼 사용자의 화면에 출력됩니다. 데이터를 조회하는 과정에서 각 요소의 역할을 이해했나요? 아직은 와닿지 않을 테니 실..

스프링부트 2025.01.20

4장 롬복과 리팩터링

4.1 롬복이란 롬복(lombok)이란 코드를 간소화해 주는 라이브러리입니다. 개발하다 보면 getter(), setter(),constructor(), toString()과 같은 필수 메서드를 사용하기 마련인데요. 이를 매번 작성하는 것은 생각보다 번거롭습니다. 스마트하지만 게으른 개발자들은 이런 반복을 없애려 했고, 그래서 나온 도구가 바로 롬복입니다. 롬복을 사용하면 필수 코드를 간편하게 작성할 수 있습니다. 또 로깅 기능을 통해 println() 문을 개선할 수 있습니다. 로깅(logging)이란 프로그램의 수행 과정을 기록으로 남기는 것을 말하는데, 일종의 자동차 블랙박스와 같습니다. 이 장에서는 롬복으로 코드를 리팩터링해 보겠습니다. 리팩터링(refactoring)이란 코드의 기능에는 변함이 ..

스프링부트 2025.01.15

3장 게시판 만들고 새 글 작성하기: Create

3.1 폼 데이터란폼 데이터(form data)란 HTML 요소인 태그에 실려 전송되는 데이터를 말합니다. 다들 인터넷 게시판에 글을 써 본적이 있을 것입니다. 내용을 입력하고 [전송] 버튼을 누르면 게시글이 올라가는데요. 태그는 이렇게 웹 브라우저에서 서버로 데이터를 전송할 때 사용합니다.  태그는 택배에 비유할 수 있습니다. 택배를 보낼 때 송장에 수령자와 배송 형태(익일 배송, 새벽 배송)를 적습니다. 태그도 데이터를 전송할 때 어디로(where), 어떻게(how) 보낼지 등을 적어서 보냅니다.  태그에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담아 받습니다. 이 객체를 DTO(Data Transfer Object)라고 합니다. DTO로 받은 데이터는 최종적으로 데이터베이스(DB, Data..

스프링부트 2025.01.15

2장 MVC 패턴 이해와 실습

2.1 뷰 템플릿과 MVC 패턴2.1.1 뷰 템플릿이란뷰 템플릿(View Template)은 화면을 담당하는 기술로, 웹 페이지(View)를 하나의 틀(Template)로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여줍니다.1장에서 스프링 부트 프로젝트를 만들 때 머스테치(Mustache)라는 도구를  추가했습니다. 이 도구가 바로 뷰 템플릿을 만드는 도구입니다. 2.1.2 MVC 패턴화면을 담당하는 뷰 템플릿은 간단히 '뷰'라고도 합니다. 뷰는 컨트롤러와 모델이라는 두 동료가 있습니다. 컨트롤러(Controller)는 클라이언트의 요청에 따라 서버에서 이를 처리하는 역할을 하고, 모델(Model)은 데이터를 관리하는 역할을 합니다. 이처럼 웹 페이지를 화면에 보여주고(View), 클라이언트의 요..

스프링부트 2025.01.13