본문 바로가기
개발공부/Spring

[Rest api] json데이터 컨트롤러로 받기 (@RequestBody)

by dokii 2021. 12. 7.
728x90
반응형

백 단에서 기능구현후 프론트와 연결하는 작업을 했다.

막연하게 ,, 제이슨 으로 받아서,, 내가 구현해놓은거랑 연결,,,

이렇게 생각했다.

 

프론트단에서 받을 파라미터가 한개라면 @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가 없어도 괜찮다.

 

 

 


https://doing7.tistory.com/10

 

[Spring] Controller에서 데이터 받기

Controller은 비지니스 로직을 처리하고 데이터를 가공한다. 이때 비지니스 로직을 처리하기위해 controller에서 데이터를 받는 방법에 대해서 알아보자. 크게 HttpServletRequest, @RequestParam, @RequestBody,..

doing7.tistory.com

 

728x90
반응형

댓글