Language/Spring

[Spring] 스프링부트로 1분만에 JSON API 로 출력해보기

The Neo 2021. 6. 13. 04:07

스프링부트(Spring Boot)로 매우 간단히 JSON 구조로 데이터를 출력할 수 있는데 본 포스팅은 프로젝트를 만들고 JSON 구조로 api까지 출력해보는 것을 만들어보고자 한다.

 

우선 web 형태로 프로젝트를 생성한다. 아래 참고

 

[Spring] 스프링 부트(Spring boot)로 웹 프로젝트 만들기

스프링부트(Springboot)로 프로젝트를 시작하기 위해서는 우선 프로젝트가 어떤 성격을 띄었는지를 알고, 해당 성격에 맞는 설정을 한 후 Generate를 하는 방법이 있다. 예를 들어 프로젝트가 웹개발

needneo.tistory.com

웹 starter로 프로젝트를 생성하였다면, 다음과 같이 VO(Value Object를 생성한다.

 

스프링부트로 1분만에 json으로 출력하기


Entity 클래스

package com.tistory.needneo;

public class NewsVO {

	private String title;
	private String content;
	private String category;
	
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getCategory() {
		return category;
	}
	public void setCategory(String category) {
		this.category = category;
	}	
}

위 Value Object는 제목, 내용, 카테고리를 포함하고 있는 Entity 클래스이다. 값을 담을 객체를 만들었다면, 화면을 출력할 Controller를 만들어본다.

 

Controller 클래스

package com.tistory.needneo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class NewsController {

	@RequestMapping("/")
	public @ResponseBody NewsVO show() {
		NewsVO vo = new NewsVO();
		vo.setTitle("뉴욕증시 안도 랠리···S&P500 이틀째 최고치 마감");
		vo.setContent("나스닥 4주연속 상승세·S&P도 3주째 올라\r\n"
				+ "존슨앤드존슨 백신 폐기로 1%이상 떨어져\r\n"
				+ "맥도날드는 고객정보 유출에도 1%대 상승");
		vo.setCategory("STOCK");
		
		return vo;
	}
}

NewsController라는 클래스를 생성 후, @Controller로 어노테이션을 생성 하였고, URL에 매핑된 메소드를 생성하였다.

 

show라는 메소드에는 NewsVO 객체를 생성 후, 각각 값을 세팅한 이후 해당 객체를 return한다. @ResponseBody라는 어노테이션은 키,값 구주로 되어 있다면 결과를 JSON 형태로 return할 수 있게 도와준다. 

 

결과 실행

대시보드에서 실행

 

컨트롤러 클래스까지 모두 만들었다면 위 붉은색 네모박스로 서버를 실행시키며, 서버가 구동되었다면 두번째 붉은색 네모박스인 브라우저를 호출하여 잘 나왔는지 확인한다.

 

json 결과 출력

 

브라우저를 띄워서 결과를 확인해보면 위와 같이 json결과가 잘 출력된 것을 확인해볼 수 있다. @ResponseBody로 이와같이 Entity 클래스를 출력할 수 있지만, 그외 모든 값을 담는 객체도 출력이 가능하다.

 

Map 객체 실행

이번에는 Map 객체를 만들어서 위와 같은 값을 담고 화면에 출력해보도록 한다. 

 

	@RequestMapping("/")
	public @ResponseBody Map<String, Object> show() {
		Map<String, Object> map = new HashMap<> ();
		map.put("title", "뉴욕증시 안도 랠리···S&P500 이틀째 최고치 마감");
		map.put("content", "나스닥 4주연속 상승세·S&P도 3주째 올라\r\n"
				+ "존슨앤드존슨 백신 폐기로 1%이상 떨어져\r\n"
				+ "맥도날드는 고객정보 유출에도 1%대 상승");
		map.put("category", "STOCK");
		
		return map;
	}

동일한 데이터를 map에 담고 화면에 출력해보도록 한다.

 

json으로 변환된 데이터

 

Entity 클래스와 동일한 값으로 출력이 된 것을 확인할 수 있다. 이와같이 @ResponseBody는 결과적으로 객체의 내용을 Rest 구조로 주고 받을 수 있게끔 json 형태(키, 값 구조일 경우)로 변환시켜 준다는 것을 알 수 있다.

 

여기까지 실행이 되었다면 이제 데이터를 받는 부분을 DAO 객체로 만들어서 DB와 Access하고 비즈니스 로직이 들어가야 될 부분은 Service 객체로 만들면 매우 간단한 Rest 구조의 API를 만들 수 있다.

 

 

반응형