[Spring] @ResponseBody 애노테이션

예원·2022년 10월 11일
0

Spring 글 모아보기

목록 보기
12/17
post-custom-banner

Spring 에서 @Controller 어노테이션은 보통 아래와 같이 view 페이지를 전달한다.

@Controller
public class HelloController {

    @RequestMapping(value = "", method = {RequestMethod.GET})
    public String hellow() {
        return "hello";
    }

}

클라이언트에는 hello.html 페이지가 전달되어 보여진다.

@ResponseBody

만약에 view 페이지가 아닌, 데이터를 전달하고 싶을땐 어떻게 할까?
@ResponseBody 를 사용하면 된다.

@ResponseBody 는 return 값을 JSON 형태로 바꿔 HTTP Body 에 담는 역할을 한다.

문자열 데이터 전달

@ResponseBody
@RequestMapping(value = "/test", method = {RequestMethod.POST})
public String test() {
	return "hello";
}

@ResponseBody 를 사용하였기 때문에 hello.html 페이지 대신 문자열 "hello" 가 전달된다.

문자열 외에도 Map, VO 등 도 전달할 수 있다.

Map 데이터 전달

@ResponseBody
@RequestMapping(value = "/test", method = {RequestMethod.POST})
public Map<String, Object> test() {
	Map<String, Object> map = new HashMap<>();
    map.put("result", "map 테스트 전송");
    return map;
}

VO 데이터 전달

@ResponseBody
@RequestMapping(value = "/test", method = {RequestMethod.POST})
public TestDto test() {
	TestDto dto = new TestDto();
    return dto;
}

@RestController

@RestController 을 이용해 API를 만들수도 있다.

@RestController 은 리턴값에 자동으로 @ResponseBody 을 붙게 되어 별도의 어노테이션을 붙이지 않아도 된다.

@RestController
public class HelloRestController {

    @RequestMapping(value = "", method = {RequestMethod.GET})
    public String hello() {
        return "hello";
    }
}

어떤 경우에 사용할지에 대한..

이부분은 개인적인 생각으로 작성하였습니다.

MVC 패턴으로 개발할 때는
@Controller + @ResponseBody

REST API 로 개발할 때는 (View 단을 건들 필요가 없는 경우)
@RestController


reference
https://memostack.tistory.com/243
https://2ham-s.tistory.com/294

post-custom-banner

0개의 댓글