본문 바로가기
공부 및 활동/스프링 강의 정리

(스프링 웹 개발 기초) API

by KChang 2021. 9. 20.

@ResponseBody : HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아니다.)

(1) @ResponseBody 문자 반환

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

실행 결과

실행1
package hello.hellospring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {
    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

    // static 선언시 class 안에서 또 다른 class를 사용할 수 있다.
    static class Hello{
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

property 접근방식, java bin 표준 방식 : getName, setName을 통해 Hello class에 접근한다.

@ResponseBody가 선언되어 있고, 객체를 반환할 시 json 형식으로 반환된다.

실행 결과

실행2

위와 같이 key와 value로 출력되면 json 형식이다.

@ResponseBody 사용 원리

아키텍처 설계

localhost:8080/hello-mvc가 실행되면, 내장 톰켓 서버를 거친다.

스프링 부트에서는 java/helloController에서 @ResponseBody return: hello(name:spring)을 json 형식으로 return해준다.

(그대로 넘겨주는데 객체가 전달된다.)

    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

객체가 오면 default가 json 방식으로 데이터를 만들어서 http 응답에 반환하겠다.

HttpMessageConverter : 단순 문자열일 시 StringConverter, 객체일 때는 JsonConverter

@ResponseBody를 사용 (실무에서 똑같이 사용된다.)

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

클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택된다.

코드 입력 덜 입력한 상태에서 자동 입력 : ctrl + shift + enter

getter/setter/생성자 자동완성 (Generate) : alt + insert

 

 

강의 주소 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

댓글