2024. 3. 19. 08:15ㆍ스프링
결론부터 말하면 우리가 브라우저에서 서버로 요청을 보내면 controller에서 요청을 받아 @ResponseBody 를 이용해 객체를 응답 body 부분에 담아서 응답해주는걸 api 방식이라고 한다.
밑에 예시를 봐보자.
1) 요청을 보냄(url)
ex1) http://localhost/hello-json?name=spring //문자열 반환을 위한 예시
ex2) http://localhost/hello-json //json 반환을 위한 예시
2) 서버의 controller에 요청이 매핑됨
기존에는 데이터를 받아서 viewResolver한테 넘겨주어서 화면에 렌더링 되어 반환되는데 @ResponseBody가 있는 경우 HttpMessageConverter가 동작하여 데이터를 응답 body에 담아서 반환한다.
HttpMessageConverter에는 JsonConverter(MappingJackson2HttpMessageConverter)와 StringConverter(StringHttpMessageConverter)가 있다.
]
만약 문자열을 반환하면 StringConverter가 작동하고 객체를 반환하면 JsonConverter가 작동한다.
html 태그와 같이 문자열을 반환하면 화면에서 html태그가 적용되어 출력됨. 만약 @Responsebody에 객체를 반환하면 변수명은 key, 값은 value인 json형태로 데이터가 반환됨
//http://localhost/hello-json?name=spring 요청에 대한 처리
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam(value="name", required=false) String name, Model model) {
// @ResponseBody와 함께 문자열을 html 태그와 같이 반환하면 데이터를 화면에 html 태그가 적용되어 보인다.
return "<h1>hello " + name+"</h1>";
}
// http://localhost/hello-json 요청에 대한 처리
@GetMapping("hello-json")
@ResponseBody
public Hello hellojson(@RequestParam(value="name", required=false) String name, Model model) {
Hello hello = new Hello();
hello.setName("wow");
// @ResponseBody와 함께 이렇게 객체를 반환하면 json형식의 데이터를 반환하게 된다.
return hello;
}
static class Hello{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3) 보여지는 화면
ex1 요청이 보여지는 화면
ex2 요청이 보여지는 화면
'스프링' 카테고리의 다른 글
컴포넌트 스캔으로 의존관계 설정 (0) | 2024.05.13 |
---|---|
회원 레파지토리 테스트케이스 작성 (0) | 2024.03.23 |
스프링부트 웹 개발방식(MVC) (0) | 2024.02.18 |
스프링부트 웹 개발 방식(정적 컨텐츠) (0) | 2024.02.18 |
스프링부트 프로젝트 빌드하고 실행하기 (0) | 2024.02.18 |