시작이 반

[Spring] 5. API 본문

Programming/Spring

[Spring] 5. API

G_Gi 2021. 1. 19. 15:40
SMALL

강의 참고 : www.inflearn.com/roadmaps/373

 

[초급~중급] 우아한형제들 개발팀장 김영한의 스프링 완전 정복 | 더 나은 학습을 위한 가이드

대세를 따르세요! 자바 스프링 베스트셀러 우형 개발팀장에게 배우는 스프링 완전 정복 🚩 오픈 3개월 만에 수강생 7000+명의 극찬 릴레이 ✨원리와 실무를 한방에, 김영한의 스프링 학습 1O1! 입

www.inflearn.com

 

정적 컨텐츠 방식을 제외하면 view를 찾아서 템플릿 엔진을 통해 화면을 렌더링해서 HTML을 웹브라우저에 넘겨주는 방식과 API를 사용하는 방식이 있다.

1. HTML로 내릴 것이냐

2. API라는 방식으로 데이터를 바로 내릴 것이냐

 

@ResponseBody

  • @ResponseBody를 사용하면 뷰 리졸버(viewResolver)를 사용하지 않음
  • 대신에 HTTP의 BODY (통신 프로토콜의 BODY) 에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아님)

 

    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name){
        return "hello " + name;
    }

 

 

 

소스를 확인해보니 html태그가 없고 문자 그대로 내려왔다.

return한 값이 그대로 내려왔다.

 

 

데이터를 달라고 할때 API방식을 많이 사용한다.

    @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;
        }
    }

객체를 return 값으로 주게되면

json형식(key와 value로 이루어짐) 으로 바껴서 보여지게 된다. 

 

 

@ResponseBody 사용원리

  • @ResponseBody가 있으면
  •  HTTP의 BODY에 문자 내용을 직접 반환 
  • viewResolver 대신에 HttpMessageConverter가 동작
  • 기본 문자처리: StringHttpMessageConverter
  • 기본 객체처리: MappingJackson2HttpMessageConverter
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
LIST