- @Controller : File을 응답하는 컨트롤러(클라이언트가 브라우저면 .html파일)
- @RestController : Data를 응답하는 컨트롤러(클라이언트가 핸드폰이면 data)
1. URL로 파라미터를 받는 방법 2가지
1. 쿼리스트링
2. 주소변수매핑
RESTful하게 파라미터를 받기 위해서 @PathVariable을 사용한다.
2. 요청데이터 타입에 따라 파라미터 형태가 달라진다.
스프링부트는 기본적으로 key=value 형태의 x-www-form-urlencoded 타입을 파싱해준다. 따라서 별도의 @RequestBody와 같은 어노테이션 없이 String으로 받을 수 있다.
하지만 text/plain이나 application/json형태의 데이터의 경우는 @RequestBody나 @RequestParam을 사용해서 받는다.
이때, 만약 json을 받아서 {"username":"kang"}을 얻었다고 한다면 우리는 kang만 따로 빼내어 사용하고 싶을 때 불편함이 있다. 물론 @RequestParam을 사용하여 각각의 변수에 맞는 값을 추출할 순 있지만 객체로 바로 저장하고 싶을 때는 (@RequestBody User user) 형태로 User클래스에 바로 저장이 가능하다. <- 이경우 미리 만들어논 User클래스와 getter가 있어야 할 것이다.
Reference : @RequestBody와 @RequestParam의 차이를 잘 설명한 블로그 https://ocblog.tistory.com/49
응답시에는 스프링부트 내부의 MessageConverter가 자동으로 자바오브젝트를 json으로 변경해서 응답을 해준다. 따라서 아래와 같이 개발자가 User오브젝트형태로 반환을 해주면 화면에는 저절로 json이 출력되는 것을 볼 수 있다.
3. 스프링부트 기본템플릿 엔진?
스프링부트는 기본적으로 mustache를 템플릿엔진(자바 코드를 넣어 동적인 응답을 가능하게 한다)으로 사용하기때문에 jsp엔진을 사용하기 위해서는 jsp엔진라이브러리를 추가하고 ViewResolver설정을 해주어야 한다.
'Projects > SNS프로젝트' 카테고리의 다른 글
[댓글] 댓글 구현하기(1) (1) | 2022.02.07 |
---|---|
[회원가입] 회원가입 구현 (0) | 2022.01.17 |
Spring Security의 로그인 절차 (0) | 2022.01.16 |
@Builder를 써야하는 이유 (0) | 2022.01.15 |
스프링부트 등장배경&동작원리 (0) | 2022.01.13 |
댓글