Spring/Spring Boot

@RequestBody - ajax Json 요청을 객체 응답으로 자동 변환

민돌v 2021. 11. 24. 18:01
728x90

컨트롤러에서 데이터를 전달해 인자에 할당하는 대표적인 방법으로는 @RequestBody 와 @RequestParam이 있다.

 

@RequestParam


@RequestParam 어노테이션은 단일 파라미터를 전달 받을때 사용하는 어노테이션 입니다.

 

넘어온 값의 키로 값을 불러오는 어노테이션 입니다.

@GetMapping("/save")
    public Word createWord(@RequestParam String content){

        Word new_word = new Word(content);
        return wordrepository.save(new_word);
    }

 

RequestParam을 사용하면 단일 변수값을 받아오기 때문에 받아오는 데이터가 많아지기도 하고

return을 해줄 때도 다시 Json 객체로 변환후 반환을 해주어야 한다는 번거로움이 있습니다.

 


 

 

@RequestBody


@RequsetBody 어노테이션은 한만디, 자바 객체를 JSON 형태로 핸들링 해주는 기능을 제공하는 어터테이션이다!

 

이게 왜 필요하고 편하냐면,

CSR(Client Server Rendering)이 유행(?) 하고있는 요즘, API에서 객체를 요청하고 응답받을때 JSON 형태로 주고 받는 경우가 많은데, 이 모든 걸 알아서 자동으로 해준다. (베리 나이스)

 

@RequestBody의 주요기능은, Json 데이터를 자바 객체로 - 자바 객체를 Json  객체로 변환해준다는 것이다.

 

@RestController와 같이 쓰여야한다.

RestController 어노테이션 자체가, REST 방식의 통신을 한다는 의미이다.

@RequiredArgsConstructor
@RestController
public class ArticleController {

    private final ArticleService articleService;

    @PostMapping("/article")
    public Article setArticle(@RequestBody ArticleRequestDto articleRequestDto){
        return articleService.setArticle(articleRequestDto);
    }
}

대신 주의해야할 건, Json 객체의 요청 변수명과, 자바 클래스의 멤버변수명이 동일해야 자동으로 매핑이 된다.

해당되는 변수명이 없다면 자동으로 Null 값이 들어간다.

 

 

반응형