ResponseEntity<>(body, status) : 응답 본문과 상태 코드를 명시적으로 지정
@ResponseBody
@PostMapping("/custom")
public ResponseEntity<Map<String, Object>> customResponse() {
Map<String, Object> response = new HashMap<>();
response.put("message", "Custom 응답입니다.");
// 상태 코드 201(CREATED)로 응답
return new ResponseEntity<>(response, HttpStatus.CREATED);
}
3) 헤더 추가하기
HttpHeaders로 응답 헤더 설정 가능. Content-Disposition 헤더를 설정하여 파일 다운로드 처리 가능
@ResponseBody
@PostMapping("/file")
public ResponseEntity<byte[]> downloadFile() {
byte[] fileContent = ... // 파일 내용을 바이트 배열로 로드
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=\"example.txt\"");
return new ResponseEntity<>(fileContent, headers, HttpStatus.OK);
}
4) 에러 응답 처리
HttpStatus.BAD_REQUEST : 400 Bad Request와 함께 에러 메시지 반환
@ResponseBody
@PostMapping("/error")
public ResponseEntity<Map<String, Object>> errorResponse() {
Map<String, Object> error = new HashMap<>();
error.put("message", "잘못된 요청입니다.");
// 상태 코드 400(BAD_REQUEST)과 함께 에러 메시지 반환
return new ResponseEntity<>(error, HttpStatus.BAD_REQUEST);
}
5) 조건에 따라 다른 응답 반환
isValid 파라미터에 따라 상태 코드와 응답 본문을 다르게 처리
@ResponseBody
@PostMapping("/conditional")
public ResponseEntity<String> conditionalResponse(@RequestParam boolean isValid) {
if (isValid) {
return ResponseEntity.ok("유효한 요청입니다.");
} else {
return new ResponseEntity<>("잘못된 요청입니다.", HttpStatus.BAD_REQUEST);
}
}