백 단에서 기능구현후 프론트와 연결하는 작업을 했다.
막연하게 ,, 제이슨 으로 받아서,, 내가 구현해놓은거랑 연결,,,
이렇게 생각했다.
프론트단에서 받을 파라미터가 한개라면 @RequestParam을 사용하고,
파라미터를 한꺼번에 객체로 받으려면 @RequestBody 를 이용하자.
@RequestParam 사용 예제 (컨트롤러)
public int write(@RequestParam("answer_year") String answer_year, required="false", defaultValue="mangdo") {
int result = answerService.insertAnswer(answer_year);//바로 파라미터를 사용할수 있다.
return result;
}
파라미터를 1:1 로 사용할때 많이쓴다. 물론 하나하나 다 넣어서 쓸수도 있지만...
required는 파라미터의 필수 여부이다. 디폴트값은 true이다.
defaultVaule로 required="false"면서 만약 해당 파라미터를 받지않았다면 파라미터의 기본값을 설정해줄 수 있다.
만약 requried="true"면서 파라미터가 넘어오지않게되면 400에러가 발생한다. 자주 에러가 나는 부분이기도 하니까 주의가 필요하다.
@RequestBody 사용 예제 (컨트롤러)
@PostMapping("/answers/new")
public int write(@RequestBody AnswerVO answer) throws Exception {
int result = answerService.insertAnswer(answer);//객체로 전달한다.
//객체에는 2개이상의 데이터가 들어있다!
}
주의할점
1. POST요청과 함께 사용되어야한다.
: MessageConverter는 HTTP 요청의 Body내용을 자바의 객체로 변환시킨다. GET방식의 메소드는 애초에 Body가 존재하지 않기때문에 에러를 발생시킨다.
2. JSON 데이터받을 때 주로 사용
: JSON이나 XML과 같은 데이터를 MessageConverter를 이용해서 자바의 객체로 변환한다.
3. Setter가 없어도 된다.
: @ModelAttribute는 자바의 객체로 1:1 매핑이기에 Setter가 필수지만 @RequestBody는 MessageConverter를 통한 자바의 객체로 변환이기때문에 Setter가 없어도 괜찮다.
'개발공부 > Spring' 카테고리의 다른 글
[스프링부트] 스프링 입문 - 코드로 배우는 스프링 부트(인프런, 김영한) (0) | 2022.03.02 |
---|---|
[spring] RestController에서 파라미터 여러개 (0) | 2021.12.04 |
[spring] tdd로 개발하기(1) (작성중) (0) | 2021.11.27 |
[spring] 왜 처음 프로젝트를 실행하면 home.jsp가 실행될까? (0) | 2021.11.27 |
[spring] clone해온 파일 스프링으로 import하기 (0) | 2021.11.24 |
댓글