ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Spring 입문> 3.3 스프링 웹 개발 기초_API
    Spring 입문 2025. 4. 17. 12:32
    반응형

    경로: src > main > java > ... > controller > HelloController

    @Controller
    public class HelloController {
        // 문자가 반환 될 경우
        @GetMapping("hello-string")
        @ResponseBody
        public String helloString(@RequestParam("name") String name) {
            return "hello" + name;
        }
        // 객체가 반환 될 경우
        @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;
            }
        }

     

    경로: src > main > resources > templates > hello.html

    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Hello</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
    </body>
    </html>

     

     


     

    @ResponseBody를 사용

    @ResponseBody는 컨트롤러 메서드의 반환값을 "화면(html)"이 아닌 "데이터 자체로" 클라이언트에게 전달하라는 뜻

     

    예시 1: 일반 컨트롤러 (뷰 반환)

    @Controller
    public class HelloController {
        @GetMapping("/hello")
        public String hello() {
            return "hello";  // hello.html이라는 뷰 템플릿을 찾아서 응답
        }
    }

     

    예시 2: @ResponseBody 사용, 문자 반환

    @Controller
    public class HelloController {
        @ResponseBody
        @GetMapping("/hello-string")
        public String helloString() {
            return "hello world";  // "hello world"라는 텍스트 자체가 브라우저에 응답됨
        }
    }

     

     

     예시 3: @ResponseBody 사용, 객체 반환 → JSON 응답

    @Controller
    public class HelloController {
        @ResponseBody
        @GetMapping("/hello-api")
        public Hello helloApi() {
            Hello hello = new Hello();
            hello.setName("자바");
            return hello;  // {"name":"자바"} 라는 JSON 데이터로 응답됨
        }
    
        static class Hello {
            private String name;
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
        }
    }

     

     

    @ResposeBody를 사용함으로써 ViewResolver 대신에 HttpMessageConverter가 동작

    • HttpMessageConverter는 기본 문자를 처리하는 StringConverter과 기본 객체를 처리하는 JsonConverter가 있다.
      • StringConverter가 사용되면 문자 HTTP 응답 본문에 포함
      • JsonConverter 가 사용되면 객체 HTTP 응답 본문에 포함

     

Designed by Tistory.