no image
코딩자율학습단 스프링부트_11장
REST API의 동작 이해하기클라이언트가 보내는 HTTP 요청 메시지의 첫 줄에는 시작 라인인 요청 라인이 있고 그 아래에는 헤더와 본문이 있고, 응답 메시지의 첫 줄에도 시작 라인인 상태 라인이 있고 그 아래 헤더와 본문이 있다.응답으로 오는 상태 코드 요청이 성공했을 때는 200, 데이터 생성을 완료했을 때는 201을 반환한다.요청한 정보를 찾을 수 없을 시에는 404, 서버 오류는 500을 반환한다.위의 이미지와 같이 JSON은 키와 값의 쌍으로 된 속성으로 데이터를 표현하는데, JSON의 값으로 또 다른 JSON 데이터나 배열을 넣을 수도 있다.마지막으로 REST와 API의 의미를 알아보자면, 먼저 REST는 HTTP URL로 서버의 자원을 명시하고 HTTP 메서드로 해당 자원에 대해 CRUD ..
2024.08.17
no image
코딩자율학습단 스프링부트_10장
REST API와 JSON의 등장 배경웹 서비스를 사용하는 클라이언트에는 스마트폰, 태블릿, 각종 센서 등 모두 클라이언트이다.서버는 이러한 모든 클라이언트의 요청에 응답해야 하는데 그 방법으로 REST API를 사용하는 것이다.REST API는 서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계방식이다.REST API 방식에서는 HTTP 요청에 대한 응답으로 서버의 자원을 반환한다.서버는 클라이언트의 요청에 대한 응답으로 화면이 아닌 데이터를 전송하는데, 이 때 사용하는 응답 데이터는 JSON(Java Script Object Notation)이다.JSON 데이터는 키와 값으로 구성된 정렬되지 않은 속성의 집합으로 키는 문자열이므로 항상 큰따옴표로 감싸고, 값은 문자열인 경우에만 큰따옴..
2024.08.16
no image
코딩자율학습단 스프링부트_9장
JPA 로깅 설정하기로깅이란 시스템이 작동할 당시의 상태와 작동 정보를 기록하는 것을 말한다.JPA의 로깅 설정은 application.properties 파일에서 할 수 있는데 로깅 레벨을 디버그로 설정하여 아래 코드 추가.# JPA 로깅 설정# 디버그 레벨로 쿼리 출력logging.level.org.hibernate.SQL=DEBUG로깅 레벨은 7단계로 나눌 수 있는데 아래와 같다.서버를 실행해 정말로 SQL 쿼리가 로그로 찍히는지 확인해 보면 아래와 같이 쿼리들이 실행되는 것을 볼 수 있다.그런데 쿼리들이 한 줄로 나와 보기 힘드니 정렬하는 코드를 application.properties에 추가해 준다.여기에 함께 매개변수 값을 보여주는 코드도 동일 파일에 추가해 준다.# 쿼리 줄바꿈하기spring..
2024.08.15
no image
코딩자율학습단 스프링부트_8장
데이터 삭제 과정이제 CRUD의 마지막 단계인 삭제 과정에 대해 살펴볼 것이다.게시판에서 글을 삭제하는 과정은 특정 글의 삭제를 요청하면 컨트롤러에서 레파지토리를 통해 데이터를 찾고,찾은 데이터를 삭제하는데 기존 데이터가 있을 경우만 삭제 후 결과 페이지로 리다이렉트한다.리다이렉트 시 삭제 완료 메시지도 같이 띄워주면 좋을 테니 이것은 RedirectAttributes 객체의 메서드를 활용한다.데이터 삭제하기삭제 버튼을 추가하기 위해 show.mustache 파일을 열어 아래 코드를 edit 버튼을 만든 a태그 아래 줄에 추가해준다.Deletedelete 버튼을 클릭해보면 에러 페이지가 나올텐데 아직 컨트롤러를 만들지 않았기 때문이다.ArticleController에다가 delete 메서드를 아래와 같이..
2024.08.14
no image
코딩자율학습단 스프링부트_7장
데이터 수정 과정데이터 수정 작업은 크게 두 단계로 나누어지는데 처음은 수정 페이지를 만들고 기존 데이터 불러오기이고,두 번째 단계는 데이터를 수정해 DB에 반영한 후 결과를 볼 수 있게 상세 페이지로 리다이렉트 하기이다.수정 페이지 만들기먼저 상세 페이지인 show.mustache 파일을 열어서 Edit 버튼을 만드는 코드를 추가해 준다.EditEdit 버튼을 클릭하면 에러 페이지가 뜨는데 아직 컨트롤러를 만들지 않았기 때문이니 컨트롤러에 아래 코드 추가해 준다.그다음은 new.mustache 파일을 복사하고 파일 이름을 edit.mustache로 바꾸어 edit 뷰 파일을 생성해 준다.코드를 수정해주어야 하는데 폼 태그의 action 속성 값을 공백으로 만들어주고,back 링크를 누르면 상세 페이지로..
2024.08.13
no image
코딩자율학습단 스프링부트_6장
링크와 리다이렉트란보통 웹 페이지를 보면 처음에 목록 페이지가 뜨고,제목을 클릭하면 상세 페이지로 입력하고 글쓰기 버튼을 클릭하면 입력 페이지로 이동한다.상세 페이지에서 목록 버튼을 클릭해 목록 페이지로도 돌아갈 수 있다.이번 장에서는 이런 게시판 내 페이지 이동을 링크와 리다이렉트로 구현해 볼 것이다.링크란 미리 정해 놓은 요청을 간편히 전송하는 기능으로 페이지 이동을 위해 사용한다.어떤 경우 서버에서 결과 페이지를 응답하지 않고 재요청하라는 회신을 보내기도 하는데 이것이 리다이렉트이다.리다이렉트를 지시받은 클라이언트는 해당 주소로 다시 요청을 보내고 서버는 이에 대한 결과를 응답한다.링크와 리다이렉트를 이용해 페이지 연결하기기존에 만든 서비스의 문제점을 분석해 보자면 첫 번째는 목록 페이지에 새 글 ..
2024.08.12
no image
코딩자율학습단 스프링부트_5장
데이터 조회 과정웹 페이지에서 게시글을 등록하면 서버를 통해 DB에 저장이 된다.이렇게 DB에 저장된 데이터를 웹 페이지에 출력하는 과정은 URL 요청 후 데이터 정보 전달 후,DB 조회 요청으로 DB에서 데이터를 찾아 엔티티로 변환 후 변환된 엔티티를 뷰 템플릿으로 전달해 뷰 페이지를 출력한다.단일 데이터 조회하기먼저 URL 요청받기를 위해서 articles/id로 URL을 요청했을 때 이를 받아줄 컨트롤러를 만들어 볼 것이다.show 메서드를 만드는데 매개변수는 @PathVariable로 id를 가져오면 된다.메서드에 log.infofh id를 잘 가져오는지 중간 확인을 해 보면 아래와 같이 잘 나오는 것을 볼 수 있다.@GetMapping("/articles/{id}")public String sh..
2024.08.11
no image
코딩자율학습단 스프링부트_4장
롬복이란코드를 간소화해주는 라이브러리로 로깅 기능을 통해 println() 문을 개선할 수 있음.로깅이란 프로그램의 수행 과정을 기록으로 남기는 것을 말하는데 일종의 블랙박스와 같다.이 장에서는 롬복으로 코드를 리팩터링 해 볼 것인데,리팩터링이란 코드의 기능에는 변함이 없이 코드의 구조 또는 성능을 개선하는 작업을 말함.롬복을 활용해 리팩터링하기build.gradle 파일을 열어서 아래 코드 작성으로 롬복 추가 후 코끼리 모양 새로고침 아이콘으로 라이브러리 다운로드.compileOnly 'org.projectlombok:lombok'annotationProcessor 'org.projectlombok:lombok'DTO를 먼저 리팩터링 하기 위해 ArticleForm 파일을 열어서 생성자 전체 삭제를 하..
2024.08.10
no image
코딩자율학습단 스프링부트_3장
폼 데이터란폼 데이터란 HTML 요소인 태그에 실려 전송되는 데이터. 태그는 택배에 비유할 수 있는데,택배를 보낼 때 수령자와 배송형태 배송지 주소 등을 작성하는 것처럼 폼 태그도 이와 같은 역할.폼 태그에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담아 받는데 이 객체를 DTO라고 부름.DTO로 받은 데이터는 최종적으로 데이터베이스에 저장.폼 데이터를 DTO로 받기templates 디렉터리에서 articles 폴더를 만들고 new.mustache 파일 생성.2장에서 만들었던 헤더와 푸터 추가해 주고 부트스트랩으로 폼 만들기.그다음은 이제 ArticleController를 만들어서 뷰 페이지를 보여주기 위해 메서드 추가.package com.example.firstproject.controller;i..
2024.08.06