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-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
˙ 프로젝트 다운로드
'스프링 프레임워크' 카테고리의 다른 글
[JAVA] of와 from 사용 이유[차이점] (0) | 2023.05.14 |
---|---|
JPA Repository에서 Data Pageable 기능 구현 (0) | 2023.05.03 |
Spring Data JPA 설정 및 초기 데이터 생성 (0) | 2023.05.01 |
Springboot 프로젝트와 React.js 프로젝트 연동 배포 (0) | 2023.03.13 |
Springboot 프로젝트와 React.js 프로젝트 연동 설정 (0) | 2023.03.13 |