본문 바로가기
  • Let's study
BackEnd/Spring

[Spring] REST API 응답 처리하기 - @RequestBody와 ResponseEntity

by 코딩고수이고파 2026. 8. 13.

1. @RequestBody로 JSON 데이터 받기

REST API에서는 클라이언트가 요청 본문에 JSON 데이터를 담아 서버로 전달하는 경우가 많다.

이때 @RequestBody를 사용하면 JSON 데이터를 Java 객체로 변환해서 받을 수 있다.

@PostMapping
public RsData<PostDto> write(
        @Valid @RequestBody PostWriteRequestBody reqBody
) {
    Post post = postService.write(reqBody.title, reqBody.content);

    return new RsData<>(
            "201-1",
            "%d번 글이 성공적으로 작성되었습니다.".formatted(post.getId()),
            new PostDto(post)
    );
}

Postman에서는 Body → raw → JSON을 선택하고 다음과 같이 요청할 수 있다.

{
    "title": "제목입니다.",
    "content": "내용입니다."
}

Spring이 JSON 데이터를 PostWriteRequestBody 객체로 변환해준다.

2. HTTP 상태 코드를 직접 지정하기

Spring에서는 Controller가 정상적으로 객체를 반환하면 기본적으로 200 OK로 응답한다.

하지만 게시물 생성처럼 201 Created를 반환하고 싶은 경우가 있다.

이때 ResponseEntity를 사용할 수 있다.

@PostMapping
public ResponseEntity<RsData<PostWriteResBody>> write(
        @Valid @RequestBody PostWriteRequestBody reqBody
) {
    Post post = postService.write(reqBody.title, reqBody.content);

    RsData<PostWriteResBody> rsData = new RsData<>(
            "201-1",
            "%d번 글이 성공적으로 작성되었습니다.".formatted(post.getId()),
            new PostWriteResBody(
                    new PostDto(post),
                    postService.count()
            )
    );

    return ResponseEntity
            .status(201)
            .body(rsData);
}
 
ResponseEntity.status(201).body(rsData);
 

HTTP 상태 코드를 201로 설정하고 rsData를 응답 본문으로 반환한다는 의미이다.

댓글