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

    스프링부트(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를 만들 수 있다.

     

     

    반응형

    댓글

    Designed by JB FACTORY