이번에는 스프링 부트 초기 설정이 끝나고 REST API를 만들기 위한 챕터 1을 기술하려고 한다.
챕터 1은 REST API 에서 데이터를 클라이언트, 뷰로 보낼 떄 Json 형식으로 리턴하는 방법에 대한 내용이다.
1. Jackson
Json 형식으로 데이터를 만드는 방법은 다음과 같은 방법이 있다.
1. 직접 Json 형식으로 데이터를 컨트롤러에서 만드는 방법.
2. 오픈소스 라이브러리 사용
1번으로 할경우 오타가 날 수 있고 버그가 많아서 여기서는 2번 Jackson 라이브러리를 추가하여 사용한다.
annotation을 사용하면 class 변수를 자동으로 json 형태로 변환하는 방법을 지원한다.
- Class 에 @RestController 가 있어야함.
- Class 에 @Controller 가 붙어있다면 Function 에 @ResponseBody 가 있어야함
단. 위와 같은 내용이 일치한다는 전제조건이 필요하다.
처음에는 Getter, Setter 관리가 수월한 lombok을 설치해야 한다.
설치 방법은 아래의 블로그를 참고하자.
https://eugene-kim.tistory.com/33
lombok 설치가 완료되었으면 다음과 같이 라이브러리를 import해도 오류가 발생하지 않는다.
model package -> Java class 파일을 만들어야 한다.
그리고 아래와 같이 JSon 형식 포멧으로 데이터를 받아올 Getter, Setter로 Project 객체를 만들어 준다.
(중요) getter, setter 필수
package model;
import java.util.Date;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Project {
public String projectName;
public String author;
public Date createdDate;
}
이제 REST API 구조를 사용하기 위하여 annotation으로 컨트롤러를 추가한다.
@RestController를 사용해야 @Responsebody가 없어도 반환할 수 있다.
package com.example.demo;
import java.util.Date;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import model.Project;
@RestController
public class MainController {
@GetMapping("/info")
public Object projectInfo() {
Project project = new Project();
project.projectName = "preword";
project.author = "hello-bryan";
project.createdDate = new Date();
return project;
}
}
브라우저로 확인하면 아래와 같이 Json 형식의 데이터가 생성된 것을 확인 할 수 있다.
2. GSON
class 파일을 만들지 않고, 직접 json 을 만들어서 보내야 할 경우가 있다.
여기에서 gson(google json) version 을 확인하고 다운로드 하면 된다.
(사용자가 많은 버전이 2.8.5 버전)
등록한 Gson을 라이브러리에 추가해야 한다.
아래와 같이 gson jar 파일을 라이브러리에 추가해서 등록해준다.
(라이브러리 추가방법은 lombok 블로그 참고)
Gson 파일을 등록하면 아래처럼 google gson import로 가져다가 사용할 수 있다.
package com.example.demo;
import java.util.Date;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@RestController
public class JsonParm {
@GetMapping("/info2")
public String customJson() {
JsonObject jo = new JsonObject();
jo.addProperty("projectName", "preword");
jo.addProperty("author", "hello-bryan");
jo.addProperty("createdDate", new Date().toString());
JsonArray ja = new JsonArray();
for (int i = 0; i < 5; i++) {
JsonObject jObj = new JsonObject();
jObj.addProperty("prop" + i, i);
ja.add(jObj);
}
jo.add("follower", ja);
return jo.toString();
}
}
이제 작성이 끝났으면 다시 서버를 가동시켜보자
아래와 같이 Json 형식으로 쉽게 원하는 데이터를 만들 수 있다.
Jackson 의 장점
- 모든 JAX-RS 및 Spring Framework 에 내장
- 광범위한 annotation 지원
Gson 의 장점
- 간단한 경우 사용의 편리함
- serializing/deserializing 에서 java entity를 통하지 않아도 됨.
개인적인 생각
필요한 경우에 따라 Jackson을 베이스로 사용하고 간단한 json데이터가 필요하면 Gson 을 사용하는 방법이 좋다고 본다. Jackson 자체는 많은 annotation을 지원하기도 하고 클래스 파일의 Getter, Setter를 통해서 Json 데이터 관리하기도 쉽다. 중요한 데이터는 Jackson으로 관리하고 간단한건 Gson을 사용하는걸 추천한다.
'백엔드 > Spring Boot' 카테고리의 다른 글
[Spring Boot] REST API 만들기 (4) - MySQL + JDBC Template (0) | 2021.10.12 |
---|---|
[Spring Boot] REST API 만들기 (3) - Service 생성 (0) | 2021.10.12 |
[Spring Boot] REST API 만들기 (2) - 로그 남기기 (slf4j+logback) (0) | 2021.10.07 |
[이클립스] 스프링 부트 cannot resolved (0) | 2021.10.07 |
[이클립스] 스프링 부트 초기 세팅 (0) | 2021.10.07 |