스프링 부트 백엔드 개발 강좌, 블로그 제작 예제, 블로그 글 목록 조회를 위한 API 구현하기

안녕하세요! 이번 강좌에서는 스프링 부트를 이용하여 간단한 블로그 애플리케이션을 개발하는 방법에 대해 알아보겠습니다. 구체적으로, 블로그 글 목록을 조회하기 위한 API를 구현하는 과정을 단계별로 살펴보겠습니다. 이 강좌를 통해 스프링 부트의 기본적인 구성 요소와 RESTful API 설계의 원리를 이해하고, 실전에서 어떻게 활용할 수 있는지를 배울 수 있습니다.

1. 스프링 부트 소개

스프링 부트는 자바 기반의 웹 프레임워크인 스프링의 일환으로, 개발자가 신속하게 새로운 애플리케이션을 구축할 수 있도록 도와줍니다. 스프링 부트는 복잡한 설정을 최소화하고, 필요한 기능들을 의존성 주입을 통해 쉽게 추가할 수 있게 해줍니다. 스프링의 강력한 기능을 활용하면서도 보다 간편한 개발 경험을 제공합니다.

2. 프로젝트 설정

우선, 스프링 부트 프로젝트를 생성해야 합니다. 이를 위해 Spring Initializr를 이용할 수 있습니다.

  1. 기본 설정
    웹 페이지의 인터페이스는 RESTful API를 통해 구성하므로, ‘Spring Web’ 의존성을 추가합니다. 비즈니스 로직을 구성하기 위한 ‘Spring Data JPA’와 데이터베이스를 연결하기 위한 ‘H2 Database’를 추가합니다.
  2. 프로젝트 메타데이터
    Group: com.example
    Artifact: blog
  3. Java 버전
    Java 11 이상을 사용하도록 설정합니다.

3. 기본 디렉토리 구조

생성한 프로젝트를 IDE(예: IntelliJ IDEA)에서 열고, 기본 디렉토리 구조를 확인합니다. 프로젝트는 다음과 같은 구조를 갖게 될 것입니다.

blog
│
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── blog
│   │   │               ├── BlogApplication.java
│   │   │               ├── model
│   │   │               ├── repository
│   │   │               ├── service
│   │   │               └── controller
│   │   └── resources
│   │       ├── application.properties
│   │       └── static
│   └── test
└── pom.xml

4. 도메인 모델 정의

하나의 블로그 글을 표현하는 도메인 모델을 정의합니다. 이 모델은 블로그 글의 제목, 내용, 작성자, 작성 날짜 등을 포함해야 합니다.

package com.example.blog.model;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
public class Post {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String title;
    private String content;
    private String author;
    
    private LocalDateTime createdDate;

    // getters and setters
}

5. JPA Repository 구현

JPA Repository를 통해 데이터베이스에 접근할 수 있도록 인터페이스를 정의합니다. 블로그 글 목록을 조회하는 메서드를 포함해야 합니다.

package com.example.blog.repository;

import com.example.blog.model.Post;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface PostRepository extends JpaRepository {
    List findAll();
}

6. 서비스 레이어 구현

서비스 레이어를 만들어, 비즈니스 로직을 처리하는 클래스를 구현합니다. 여기서는 예를 들어 게시글 목록을 가져오는 메서드를 만들어 보겠습니다.

package com.example.blog.service;

import com.example.blog.model.Post;
import com.example.blog.repository.PostRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PostService {
    @Autowired
    private PostRepository postRepository;

    public List getAllPosts() {
        return postRepository.findAll();
    }
}

7. 컨트롤러 구현

RESTful API를 위한 컨트롤러를 생성하여 클라이언트의 요청을 처리합니다. 여기서는 HTTP GET 요청을 통해 블로그 글 목록을 조회하는 API를 만들겠습니다.

package com.example.blog.controller;

import com.example.blog.model.Post;
import com.example.blog.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/api/posts")
public class PostController {
    @Autowired
    private PostService postService;

    @GetMapping
    public ResponseEntity> getAllPosts() {
        List posts = postService.getAllPosts();
        return ResponseEntity.ok(posts);
    }
}

8. 애플리케이션 프로퍼티 설정

데이터베이스 연결을 위한 설정을 application.properties 파일에 추가합니다. H2 데이터베이스를 샘플로 사용합니다.

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update

9. 애플리케이션 실행 및 테스트

이제 애플리케이션을 실행하고 PostController의 getAllPosts API를 테스트해 보겠습니다. Postman 또는 curl을 사용하여 아래와 같은 요청을 보내면 됩니다.

GET http://localhost:8080/api/posts

위의 GET 요청을 통해 미리 입력된 게시글 목록이 반환되어야 합니다.

10. 결론

이번 강좌에서는 스프링 부트를 이용하여 간단한 블로그 글 목록 조회 API를 구현해 보았습니다. 이 과정을 통해 스프링 부트의 기본적인 구조와 RESTful API의 설계 원리를 배웠습니다. 추가적으로 사용자 인증 및 CRUD 기능을 구현하여 더 나아가보는 것도 좋은 방법입니다.

더 많은 스프링 부트 관련 자료를 찾아보며, 자신의 블로그 프로젝트를 계속 발전시켜 보세요!