본문 바로가기

웹 개발/Spring

[Spring 기초] API

API


정적템플릿이 아닐 경우 두 가지 방법이 있다. Html로 내리는 방법과 데이터를 내리는 방법이다. 데이터를 내리는 방식이 API 인데 코드를 통해 살펴보자. 

 

예제


1. 컨트롤러에 아래 내용을 추가해보자. 

HelloController.java

    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam(value = "name", required = false) String name, Model model) {
        
        return "hello" + name;
    }

 

=> @ResponseBody 는 http에 body 부분에 데이터를 직접 넣어주겠다는 의미이다. 

이전 템플릿 엔진과의 차이는 view 없이 문자가 그대로 내려간다는 점이다. 

 

달라진 게 없어보이지만 마우스 우클릭 해서 소스보기를 클릭해보면 달라진 내용을 확인할 수 있다. 

=> html이 아닌 문자열이 그대로 내려온 것을 확인할 수 있다. 

 

예제2


실제로는 String 보다는 데이터를 내리는 경우가 많다. 예제를 통해 확인해보자. 

 

컨트롤러에 아래 내용을 추가해보자. 

 

HelloController.java

 @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }
    
    static class Hello {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

 

 

=> 화면에 JSON 방식으로 내려오는 것을 확인할 수 있다. 

 

 

@ResponseBody 사용원리


실제로는 String 보다는 데이터를 내리는 경우가 많다. 예제를 통해 확인해보자. 

 

  • 스프링은 @ResponseBody 어노테이션이 붙어있으면, http 응답에 이 데이터를 그대로 넘긴다. 그러면 viewResolver 대신에 HttpMessageConverter 가 동작한다. 
  • 이 때 문자가 아닌 객체일 때 기본적으로는 JSON으로 데이터를 만들어서 http 응답을 반환한다. 
  • 기본 문자처리 : StringHttpMessageConverter
  • 기본 객체처리 : MappingJackson2HttpMessageConverter
  • 여러 HttpMessageConverter가 기본으로 등록되어 있다. 

 

 

* 인프런 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 강의를 참고하여 작성했습니다. 

'웹 개발 > Spring' 카테고리의 다른 글

[Spring 기본] 스프링이란?  (0) 2024.07.31
[Spring 기초] AOP  (0) 2024.07.30
[Spring 기초] MVC와 템플릿 엔진  (0) 2024.07.24
[Spring 기초] 스프링 웹 개발 기초  (0) 2024.07.24
[Spring 실습] View 환경설정  (0) 2024.07.24