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

본 강좌에서는 스프링 부트를 활용하여 블로그 글 목록 조회를 위한 API를 구현하는 방법을 살펴보겠습니다. 스프링 부트는 생산성을 극대화할 수 있는 프레임워크로, 설정과 구성이 간편하여 개발자가 본연의 비즈니스 로직에 집중할 수 있게 해줍니다. 이 강좌에서는 블로그의 기본적인 API를 설계하고 구현하는 과정을 단계별로 자세히 안내하겠습니다.

1. 스프링 부트 소개

스프링 부트(Spring Boot)는 스프링 프레임워크를 기반으로 하는 경량화된 애플리케이션 프레임워크입니다. 주로 마이크로서비스 아키텍처를 구현하는 데 자주 사용되며, 개발자가 빠르게 애플리케이션을 구성하고 배포할 수 있도록 돕습니다. 스프링 부트의 장점은 다음과 같습니다:

  • 자동 구성: 개발자가 최소한의 설정으로 프로젝트를 시작할 수 있습니다.
  • 의존성 관리: Maven 또는 Gradle을 통해 간편하게 라이브러리를 관리할 수 있습니다.
  • 내장 서버: 별도의 서버 설치 없이도 손쉽게 애플리케이션을 실행할 수 있습니다.

2. 프로젝트 준비

2.1. 개발 환경

본 강좌에서는 다음과 같은 개발 환경을 사용합니다:

  • Java 11 이상
  • Spring Boot 2.x
  • Spring Data JPA
  • H2 Database (개발용 인 메모리 데이터베이스)
  • IDEs: IntelliJ IDEA 또는 Eclipse

2.2. 프로젝트 생성

Spring Initializr(https://start.spring.io/)에 접속하여 새로운 프로젝트를 생성합니다. 다음의 의존성을 추가합니다:

  • Spring Web
  • Spring Data JPA
  • H2 Database

프로젝트 이름, 패키지 이름 등 기타 필요한 정보를 입력하고 ZIP 파일로 다운로드한 후, IDE에서 불러옵니다.

3. 데이터 모델링

블로그 글 목록을 조회하기 위해, 먼저 블로그 글을 표현할 HTMLPost 엔티티를 정의해야 합니다.

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Post {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private String content;
    private String author;
    private LocalDateTime createdAt;

    // Getters and Setters omitted for brevity.
}

4. 리포지토리 계층 구현

데이터베이스와의 상호작용을 위해 JPA를 사용하여 리포지토리 인터페이스를 만들겠습니다.

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PostRepository extends JpaRepository {
}

5. 서비스 계층 구현

비즈니스 로직을 처리하기 위해 서비스 클래스를 만들어야 합니다.

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();
    }

    // Additional methods can be added here for more functionalities
}

6. 컨트롤러 구현

클라이언트 요청을 처리할 REST API를 구현하기 위해 컨트롤러 클래스를 작성합니다.

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.RestController;

import java.util.List;

@RestController
public class PostController {
    @Autowired
    private PostService postService;

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

7. 애플리케이션 실행

이제 모든 구성 요소가 준비되었습니다. `main` 메서드가 포함된 애플리케이션 클래스에서 애플리케이션을 실행할 수 있습니다.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BlogApplication {
    public static void main(String[] args) {
        SpringApplication.run(BlogApplication.class, args);
    }
}

8. API 테스트

API가 제대로 작동하는지 테스트하기 위해 Postman이나 cURL을 사용할 수 있습니다. GET 요청을 `/api/posts`로 보내어 결과를 확인합니다.

9. 데이터베이스 초기화

테스트를 용이하게 하기 위해 몇 개의 더미 데이터를 데이터베이스에 추가할 수 있습니다. 아래와 같은 방법으로 초기 데이터를 넣어줍니다.

import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class DataInitializer {

    @Autowired
    private PostRepository postRepository;

    @PostConstruct
    public void init() {
        Post post1 = new Post();
        post1.setTitle("첫 번째 블로그 글");
        post1.setContent("블로그 글 내용...");
        post1.setAuthor("작성자1");
        post1.setCreatedAt(LocalDateTime.now());

        Post post2 = new Post();
        post2.setTitle("두 번째 블로그 글");
        post2.setContent("블로그 글 내용...");
        post2.setAuthor("작성자2");
        post2.setCreatedAt(LocalDateTime.now());

        postRepository.save(post1);
        postRepository.save(post2);
    }
}

10. 결론

이번 강좌에서는 스프링 부트를 활용하여 블로그의 글 목록 조회를 위한 간단한 API를 구현해 보았습니다. 이 API는 블로그 글을 데이터베이스에서 조회하여 JSON 형식으로 클라이언트에 반환합니다. 이후에는 CRUD(Create, Read, Update, Delete) 기능 구현, 보안, 배포 등을 추가로 학습해 나갈 수 있습니다.

스프링 부트를 사용하는 것은 백엔드 개발을 더 간편하고 효율적으로 만들어 주며, 다양한 기능과 생태계를 통해 많은 개발자들이 선택하는 프레임워크입니다. 지속적인 학습과 실습을 통해 여러분의 개발 역량을 더욱 발전시켜 나가기를 바랍니다.

참고 자료