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

@ResponseBody

Html body태그를 이야기하는 것이 아니라

HTTP에서의 바디부의 이 데이터를 직접 넣어주겠다는 뜻!

템플릿 엔진과의 차이는 뷰는 없이 문자가 그대로 내려감

 

진짜는 여기서부터!!

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

Hello 라는 객체를 만든다!

그 안에 getter setter 를 만들어준 뒤

 

Hello객체를 반환하는 메서드를 만들어주고 

파라미터로 넘어오는 name을 setName 함수를 이용하여 넣어주는 구성을 만듬!

그러고 객체를 넘기면~~?

 

두둥! 이것은.. JSON

 

과거에는 XML이 많이 쓰였다고 한다 이것은 되게 무겁고 태그를 열고 닫고 해야함!

JSON은 심플하다는 장점이 있음 최근엔 거의  JSON방식으로 거의 변화하였다

 

스프링에서 객체를 반환하고 ResponseBody애노테이션을 주면

JSON을 반환하는것이 기본이다!


RespnoseBody 사용 원리

 

웹 브라우저에서 localhost:8080/hello-api 를 입력!

톰캣 내장서버에서 스프링에 요청을 넘긴다

스프링은 hello-api를 찾고 @ResponseBody를 확인한다 

@ResponseBody가 없다면 이전에 템플릿은 view resolver 한테 던졌지만

그대로 데이터를 넘겨야겠다고 동작을 함! 하지만 문자가 아닌 객체이다 

그렇다면 스프링입장에서 한번더 생각을 해야한다 

객체가 오면 JSON방식으로 데이터를 만들어서 HTTP응답에 반환하겟다고 기본정책으로 되어있다.

HttpMessageConverter가 동작! 

기본 문자처리 라면 StringHttpMessageConverter가 동작

기본 객체처리 라면 MappingJackson2HttpMessageConverter가 동작

 


1. 정적 컨텐츠

그냥 파일을 그대로 내려주는 방식

 

2.MVC 와 템플릿엔진

템플릿엔진을 MVC 방식으로 쪼개서

View를 템플릿 엔진으로 랜더링하여

랜더링이 된  html을 전달함

 

3.API

객체를 반환 해주는것!(일반적)

 

'웹프로그래밍 > Spring 입문' 카테고리의 다른 글

6. 회원 도메인과 리포지토리 만들기  (0) 2021.06.17
5. 비즈니스 요구사항 정리  (0) 2021.06.17
3. MVC와 템플릿 엔진  (0) 2021.06.16
2. 정적 컨텐츠  (0) 2021.06.16
1. View 환경설정  (0) 2021.06.15

+ Recent posts