③ API 방식으로 웹 브라우저에 띄우기

기록하는 용도·2024년 10월 24일

Spring

목록 보기
6/8
@GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name){
        return "hello " + name;
    }

메서드 새로 생성

@ResponseBody

ResponseBody 어노테이션이 나왔다고 그러면 '아! 문자그대로 반환해야겠다!' 라는뜻
-> http의 body에 내용을 직접 반환한다는 뜻
즉 리턴값을 "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;
        }
    }

메서드 새로 생성하고, 객체 생성

public Hello helloApi(@RequestParam("name") String name)

이 메서드 또한 ResponseBody 어노테이션을 명시했기때문에 문자그대로 반환한다고 보면되는데, 리턴 타입을 Hello 라는 객체로 두고 있는 것을 볼 수 있음

이때, 스프링부트는 '리턴값이 "객체"네? 그럼 어떡하지..' 라고 고민하고 출력을 JSON 형태로 뿌려줌

원리

  1. http://localhost:9090/hello-api?name=sole 라고 주소창에 입력하면 매핑되는 컨트롤러를 찾아나섬
  2. 그 컨트롤러에서 ResponseBody 라는 어노테이션을 발견하고, 리턴값을 확인함
  3. ResponseBody 라는 어노테이션은 기존 viewResolver의 동작 대신에 HttpMessageConverter가 동작한다.
  4. 여기서 리턴값이 String 즉, 문자이면 StringConverter를 거쳐 문자그대로 화면에 뿌리고 객체이면 JsonConverter가 동작해서 JSON 형태로 바꿔서 웹브라우저로 보냄

0개의 댓글