@RequestBody, @ResponseBody에 대해서

2023. 12. 28. 14:16·Back-end/Spring

들어가기

 Spring에서 비동기 통신을 위해 주로 Controller에서 사용하는 어노테이션 @RequestBody, @ResponseBody에 대해서 알아보자.

 

@RequestBody

클라이언트가 서버로 보내는 JSON 형식의 HTTP Body를 자바 객체로 변환하는 역할을 한다.

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class AddArticleRequest {

    private String title;
    private String content;
}
@RestController
@RequiredArgsConstructor
public class BlogApiController {

    private final BlogService blogService;

    @PostMapping("/api/articles")
    public ResponseEntity<Article> addArticle(@RequestBody AddArticleRequest request) {
        Article savedArticle = blogService.save(request);
        return ResponseEntity.status(HttpStatus.CREATED).body(savedArticle);
    }
}

 위 코드에서  Postman(클라이언트 요청을 위해 사용)을 이용해서 위 캡처와 같이 요청을 보내면 AddArticleRequest 타입의 자바 객체가 생성된다.

 

@ResponseBody

서버가 클라이언트로 보내려는 자바 객체를 JSON 형식의 HTTP Body로 변환하는 역할을 한다.

@RequiredArgsConstructor
@RestController
// @ResponseBody -> @RestController에 포함되어 있음.
public class BlogApiController {

    private final BlogService blogService;

    @GetMapping("/api/articles")
    public ResponseEntity<List<ArticleResponse>> findAllArticles() {
        List<ArticleResponse> articles = blogService.findAll()
                .stream()
                .map(ArticleResponse::new)
                .toList();

        return ResponseEntity.ok().body(articles);
    }
}

 @RestController는 @ResponseBody 어노테이션을 포함하고 있다. 그래서 따로 선언해주지 않아도 위 캡처와 같이 자바 객체를 JSON 형식의 HTTP Body로 변환하는 것을 확인할 수 있다.

저작자표시 비영리 변경금지 (새창열림)
'Back-end/Spring' 카테고리의 다른 글
  • Spring JDBC Bulk Insert 알아보기
  • HTTP Status Code, ResponseEntity에 대해서
  • @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor에 대해서
SiwonHae
SiwonHae
프로그래밍을 공부하고 있는 학생입니다.
  • SiwonHae
    시원해의 블로그
    SiwonHae
  • 전체
    오늘
    어제
    • 전체보기 (148)
      • PS(Problem Solving) (94)
        • C (25)
        • C++ (33)
        • JAVA (36)
      • Algorithm & Data Structure (13)
      • Computer Science (12)
        • Network (2)
        • Design Pattern (10)
      • Back-end (5)
        • Spring (4)
      • Front-end (1)
        • React (1)
      • JAVA (4)
      • 정보처리기사 (17)
      • SQLD (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
SiwonHae
@RequestBody, @ResponseBody에 대해서
상단으로

티스토리툴바