본문 바로가기

:: System Log

스프링 입문 강의 노트 #7. 웹 개발 기초 - API

>이전글 읽기 

 

2022.02.21 - [:: System Log] - 스프링 입문 강의 노트 #6. 웹 개발 기초 - MVC와 템플릿 엔진

 

스프링 입문 강의 노트 #6. 웹 개발 기초 - MVC와 템플릿 엔진

> 이전글 읽기 : 2022.02.16 - [:: System Log] - 스프링 입문 강의 노트 #5. 웹 개발 기초 - 정적 컨텐츠 이전글 읽기 : 2022.02.16 - [:: System Log] - 스프링 입문 강의 노트 #4. 빌드하고 실행하기 이전글 보..

everythingiok.tistory.com

 


API 방식

정적컨텐츠 이외의 동적컨텐츠는 두가지 방식이 있다.
뷰리졸버를 사용해서 html로 내리느냐, api방식이라는 걸로 데이터를 바로 내리느냐

 

 @ResponseBody 문자반환

- HelloController.java에 helloString 메소드 추가

   @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {
        return "hello "+name;
    }
[수행결과] 
-@ResponseBody를 사용하면 뷰 리졸버(viewResolver)를 사용하지 않음
-대신에 HTTP의 BODY에 문자 내용을 직접 반환하는 형태(HTML, BODY TAG를 말하는 것이 아님)

 

 

 @ResponseBody 객체반환

 

- HelloController.java 에 helloApi  메소드 추가

    @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 inputName) {
            this.name = inputName;
        }
    }

[수행결과]

- Hello 객체를 JSON 형식으로 그대로 반환

 

 

 @ResponseBody 작동원리

@ResponseBody를 사용
- HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter 가 동작
- 기본 문자처리 : StringMessageConverter
- 기본 객체처리 : MappingJackson2HttpMessageConverter
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
 
*Cmd+N : [Generate] 메뉴를 통해 getter와 setter를 손쉽게 만들수 있다
*참고 : 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택된다

 

 

> 다음글 읽기 : 

2022.02.22 - [:: System Log] - 스프링 입문 강의 노트 #8. 백엔드 개발 - 비즈니스 요구사항 정리

 

스프링 입문 강의 노트 #8. 백엔드 개발 - 비즈니스 요구사항 정리

> 이전 글 읽기 : 2022.02.21 - [:: System Log] - 스프링 입문 강의 노트 #7. 웹 개발 기초 - API 이전글 읽기 2022.02.21 - [:: System Log] - 스프링 입문 강의 노트 #6. 웹 개발 기초 - MVC와 템플릿 엔진 이..

everythingiok.tistory.com