반응형

1. 시험환경

    ˙ Spring Boot

    ˙ MariaDB

 

2. 목적

    ˙ Spring-Rest-Data 패키지 설정하는 방법을 알아보자.

    ˙ Domain과 Repository만을 가지고 빠르게 REST API 서버를 구축하는 방법을 알아보자.

 

3. 적용

    ① Spring Data JPA를 이용하여 DB 테이블 및 테스트 데이터를 생성하였다.

        - URL : https://languagestory.tistory.com/244

 

Spring Data JPA 설정 및 초기 데이터 생성

1. 시험환경 ˙ Spring Boot ˙ Spring-Data-JPA ˙ MariaDB 2. 목적 ˙ Spring Data JPA 설정하는 방법을 알아보자. ˙ Entity와 Repository만 작성하여 DB 테이블을 생성한다. ˙ Spring 프로젝트 실행 시 data.sql 초기 데이터

languagestory.tistory.com

 

    ② Spring-Data-Rest 의존성 패키지를 설치한다.

        - src/build.gradle

1
2
implementation 'org.springdoc:springdoc-openapi-data-rest:1.6.15'
implementation 'org.springframework.boot:spring-boot-starter-data-rest'
cs

 

    ③ Spring-Data-Rest 설정하여, "/api"로 시작하는 URL은 Open API 로 제공한다.

        - src/main/resource/application.yaml

1
2
3
4
  data.rest:
    base-path: /api
    default-page-size: 10
    max-page-size: 10
cs

 

    ④ Entity 클래스를 정의한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.example.datarest.domain;
 
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
 
 
@Entity
@Getter
@ToString
public class Nation {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
 
  @Setter
  private String nation;
 
  @Setter
  private int population;
 
  @Setter
  private String lang;
 
  @Setter
  private String currency;
 
}
cs

 

     Repository 인터페이스에 @RepositoryRestResource를 추가한다.

        -  Controller 및 Service 없이 미 정의된 로직에 따라 처리되어 Rest API 서버 개발이 가능하다.

1
2
3
4
5
6
7
8
9
10
package com.example.datarest.repository;
 
import com.example.datarest.domain.Nation;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 
@RepositoryRestResource
public interface NationsRepository extends JpaRepository<Nation, String> {
}
 
cs

 

    ⑥ endpoint를 호출하는 방법은 각 엔티티 클래스에 s를 붙인 형태로하거나 Repository에서 지정할 수 있다.

        - @RepositoryRestResource(path = "endpoint명")

 

4. 결과

    ˙ 여기서는 endpoint를 지정하지 않았으므로 Entity 클래스 이름에 s를 추가하여 호출한다.

        - http://localhost:8080/api/nations

 

    ˙ 프로젝트 다운로드

data-rest-example.zip
0.12MB

반응형

+ Recent posts