응답을 만드는 방법
- String 일반 Text Type 응답
- Object 자동으로 Json 변환되어 응답
- ResponseEntity Body의 내용을 Object로 설정
- @ResponseBody RestController가 아닌 곳에서 Json 응답을 내릴 때 사용
기본 객체 응답
예제 코드
ReponseApiController
@RestController
@RequestMapping("/api/v1")
public class ReponseApiController {
@GetMapping("")
public UserRequest user(){
var user = new UserRequest();
user.setUserName("홍길동");
user.setUserAge(10);
user.setEmail("hyeKjung.com");
return user;
}
}
UserRequest
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserRequest {
private String userName;
private Integer userAge;
private String email;
private Boolean isKorean;
}
결과


ResponseEntity 사용
- HTTP 응답 코드(Status Code)를 설정(조작)하는 방법
ResponseEntity.status(HttpStatus.CREATED) Status Code 설정
- 아래 코드에서는 위의 200 Status Code를 201로 바꿈.
- header 설정도 가능
예제 코드
@Slf4j
@RestController
@RequestMapping("/api/v1")
public class ReponseApiController {
@GetMapping("")
public ResponseEntity<UserRequest> user(){
var user = new UserRequest();
user.setUserName("홍길동");
user.setUserAge(10);
user.setEmail("hyeKjung.com");
user.setIsKorean(true);
log.info("user: {}",user);
var response = ResponseEntity.status(HttpStatus.CREATED).header("custom","hi").
body(user);
return response;
}
}
결과
- Status 200에서 201로 변경
- header에
custom:hi가 들어온 것을 확인할 수 있음.

Status Code 참고
CHECKPOINT(103, HttpStatus.Series.INFORMATIONAL, "Checkpoint"),
OK(200, HttpStatus.Series.SUCCESSFUL, "OK"),
CREATED(201, HttpStatus.Series.SUCCESSFUL, "Created"),
ACCEPTED(202, HttpStatus.Series.SUCCESSFUL, "Accepted"),
NON_AUTHORITATIVE_INFORMATION(203, HttpStatus.Series.SUCCESSFUL, "Non-Authoritative Information"),
NO_CONTENT(204, HttpStatus.Series.SUCCESSFUL, "No Content"),
RESET_CONTENT(205, HttpStatus.Series.SUCCESSFUL, "Reset Content"),
PARTIAL_CONTENT(206, HttpStatus.Series.SUCCESSFUL, "Partial Content"),
MULTI_STATUS(207, HttpStatus.Series.SUCCESSFUL, "Multi-Status"),
ALREADY_REPORTED(208, HttpStatus.Series.SUCCESSFUL, "Already Reported"),
IM_USED(226, HttpStatus.Series.SUCCESSFUL, "IM Used"),
MULTIPLE_CHOICES(300, HttpStatus.Series.REDIRECTION, "Multiple Choices"),
MOVED_PERMANENTLY(301, HttpStatus.Series.REDIRECTION, "Moved Permanently"),
FOUND(302, HttpStatus.Series.REDIRECTION, "Found"),