API
Controller
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name; // "hello spring"
}
@ResponseBody
http body부에 data ("hello " + name) 직접 넣어주겠다.
요청한 문자가 클라이언트에 그대로 전달.
템플릿엔진과의 차이 : view 필요 없음
http://localhost:8080/hello-string?name=spring
소스 보기 하면 html 태그 없이 문자열만 보여진다.
@ResponseBody 객체를 리턴 (API 방식)
객체 반환, @ResponseBody => json으로 반환(기본)
@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;
}
}
json 방식으로 출력.
Getter and Setter
Java Bean 규약
private 변수 외부에서 못 꺼냄. 라이브러리에서 쓸 때 메소드를 통해 접근
property 접근방식
@ResponseBody 사용 원리
웹브라우저에 localhost:8080/hello-api 요청
내장 톰캣 서버가 스프링에 알림. 스프링은 hello-api 찾음.
@ResopnseBody 어노테이션이 붙어있으므로 http 응답에 데이터를 그대로 넘겨주도록 동작
객체를 반환 시 default로 json 방식으로 데이터를 만들어 http응답에 반환 (기본 정책)
@ResopnseBody 로 오면 hello 객체를 넘김.
객체를 보고 몇 가지 조건을 봄. HTTPMessageConverter가 동작함. (기존 - viewResolver)
문자이면 StringConverter, 객체이면 JsonConverter가 동작 함.
객체를 json 스타일로 바꿈
json을 요청한 웹 브라우저 or 서버에 보내줌
객체를 json으로 바꿔주는 유명한 라이브러리 - Jackson(spring에 기본 탑재), google Gson
HTTP spec - 요청 시 포맷 : Accept 헤더
정리:
정적 컨텐츠 : 파일을 그대로 내려줌
MVC와 템플릿 엔진 : 템플릿 엔진을 mvc 방식으로 쪼개 view를 템플릿 엔진으로 html을 렌더링 하여 렌더링 된 html을 client에 전달
API : 객체를 반환. HTTPMessageConverter 통해 json 형식으로 바꿔 반환. view 없이 http response에 값을 넣어 반환.
'Spring_inflearn > 입문' 카테고리의 다른 글
[Spring] inflearn 스프링 입문 - 회원 관리 예제 - 백엔드 개발 2 (0) | 2022.09.09 |
---|---|
[Spring] inflearn 스프링 입문 - 회원 관리 예제 - 백엔드 개발 1 (0) | 2022.09.09 |
[Spring] inflearn 스프링 입문 - 스프링 웹 개발 기초 2 (0) | 2022.09.02 |
[Spring] inflearn 스프링 입문 - 스프링 웹 개발 기초 1 (0) | 2022.09.02 |
[Spring] inflearn 스프링 입문 - 프로젝트 환경설정 4 (0) | 2022.08.28 |
댓글