Spring Boot6 게시판 만들기 07 - 페이지네이션 게시판 만들기 세 번째 글에서 게시글 페이징에 대한 내용을 이미 다뤘다. 그런데 그 내용에 보충해서 해야 할 것이 하나 더 생겨서 이 글을 쓰게 됐다. 페이지네이션 페이지네이션은 콘텐츠를 여러 페이지로 나누고 버튼을 이용해서 특정 페이지로 이동할 수 있는 UI 요소다. 페이지네이션은 어떻게 만들어줄까? 지난 게시판 만들기 포스팅에서 클라이언트가 요청한 페이지 번호에 대해서 해당 페이지의 콘텐츠 리스트를 만들어서 반환해 주는 실습을 해봤다. 그리고 JPA가 반환해 준 Page 객체에서 [ic]getTotalElements()[/ic], [ic]getTotalPages()[/ic], [ic]getNumber()[/ic], [ic]getPageSize()[/ic] 등의 메서드를 통해 총 게시글 수, 총 페이지.. 2023. 5. 22. 네이버 클라우드 플랫폼 SMS API 사용해보기(NCP-Simple & Easy Notification Service) 요즘 개인적으로 특정 시간에 알림 메시지를 받아야 할 상황이 생겼다. 사실 간단하게 스마트폰 알람 주기를 설정해서 해결해도 되는 문제였지만, 일상 속에서 생긴 불편했던 점을 개발을 통해서 해결해보고 싶은 생각이 들었다. 그래서 프로그램을 직접 만들어서 SMS로 알림 시스템을 구현해 보기로 결정했다. 필요한 기능 정리 및 기술 선택 내 요구사항은 "주중(월~금)에 오후 5시 50분에 알림 문자 받기" 였다. 그럼 서버에 프로그램을 배포했을 때 crontab 같은 기능을 사용해서 내가 원하는 타이밍에 SMS를 보내는 일을 해야 한다. 그리고 가장 중요한 건 SMS로 문자 메시지를 받아야 한다. 나는 crontab은 Spring Boot에서 Spring Scheduler를 사용하기로 결정했고, SMS는 네이버.. 2023. 4. 22. 게시판 만들기 05 - 테스트 코드 작성(PostController) 저번 포스팅은 PostService 테스트 코드를 작성했다. 테스트 케이스는 게시글 쓰기, 게시글 단건 조회, 게시글 조회 실패 - 잘못된 ID였다. 이번 포스팅은 PostController 테스트 코드를 작성할 예정이고, 게시글 페이징 조회, 수정, 삭제 API를 테스트 해보려고 한다. Controller 테스트 코드를 작성하기 전에 Controller에 있는 로직들이 실행되려면 클라이언트로부터 내가 만든 애플리케이션으로 GET, POST, PUT, DELETE 등의 HTTP 요청이 와야 한다. 우리가 PostController를 만들 때 요청 Body에 게시글 데이터를 담고 [ic]/posts [/ic]로 POST 요청을 보내면 게시글을 생성하고, [ic]/posts/{postId}[/ic]로 GET.. 2022. 12. 9. 게시판 만들기 04 - 테스트 코드 작성(PostService) 이번 포스팅은 게시글 CRUD API의 테스트 코드를 작성해 보려고 한다. 나는 PostController, PostService 두 가지를 나눠서 각각 6개씩 테스트 코드를 작성했다. 게시글 쓰기 게시글 단건 조회 게시글 조회 실패 - 잘못된 ID 게시글 페이징 조회 게시글 수정 게시글 삭제 나는 Controller와 Service 두 개의 계층에서 테스트 코드를 작성했으니 12개의 테스트 코드를 작성했지만, 포스팅에서는 PostService에서 1, 2, 3번의 테스트 코드를 보여주고 PostController에서 4, 5, 6번의 테스트 코드를 보여주려고 한다. PostService 테스트 코드 작성 테스트 코드는 [ic]src/test/[/ic] 패키지 안에 작성을 한다. 테스트 코드 파일을 직접.. 2022. 12. 8. 게시판 만들기 03 - 게시글 페이징 페이징 처리 하는 이유 여러 사이트를 돌아다니다 보면 아래 사진과 같은 걸 본 적이 분명히 있을 것이다. 이런 페이징 처리는 많은 데이터들을 여러 페이지로 나눠서 제공하므로 데이터를 보는 사람들에게 효과적으로 보여주게 된다. 내가 지금 만들고 있는 게시판도 수백, 수천 개의 게시글이 생길 수도 있는데 이 게시글들을 효과적으로 보여주려면 페이징 처리를 하는 게 좋을 것이다. JPA에서 페이징 나는 지금 MySQL을 사용하고 있는데 만약에 JPA를 사용하지 않았다면 limit, offset 키워드를 활용해서 페이징 처리가 가능한 쿼리를 날렸을 것이다. 하지만 JPA에서는 아주 간단한 페이징 처리 방법을 제공한다. 먼저 저번 포스팅에서 PostRepository를 생성할 때 JpaRepository라는 인터페.. 2022. 12. 8. 게시판 만들기 02 - 게시글 CRUD 게시글 CRUD를 구현하기 전에... REST API 예전에 학원에서 프로젝트를 할 때 스프링 부트와 타임리프를 같이 사용했다. 이때는 컨트롤러에서 HTML을 반환하는 방식을 사용했고, 시간이 지나고 페이지를 반환하는 게 아닌 데이터만 반환할 수 있다는 것도 알게 됐다(REST API). 어쨌든 이번에 게시판 프로젝트에서는 스프링 부트를 사용한 REST API를 만들어볼 계획이다. REST API 참고자료 https://meetup.toast.com/posts/92 Spring Boot에서 REST API 기존에 @Controller를 붙인 컨트롤러들은 HTML을 리턴했다고 했는데, 데이터만 반환하는건 어떻게 할까? 컨트롤러에서 REST 하게 만들고 싶은 메서드에 @ResponseBody라는 어노테이션을.. 2022. 12. 2. 이전 1 다음