@ResponseEntity
ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다.
따라서 ResponseEntity란, 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스이다.
라고는 하지만 간략히
프론트엔드 쪽은 완료됬는지 안됬는지 모르기 때문에
백엔드쪽에서 프론트엔드쪽으로 "얘 성공했어" , "얘 실패했어" 라고
메시지(신호)를 보내주는 것
\ 특징 /
( 1 )
사용 목적
프로그램 품질 향상을 위해 사용
HttpStatus
응답 상태코드 참조
상수 (ENUM) | 메시지 (신호) = 응답상태코드 | 설명 |
HttpStatus.OK | 200 | 성공 |
HtppStatus.FOUND | 302 | 찾음 |
HttpStatus.BAD_REQUEST | 400 | 요청구문이 잘못됨 |
HttpStatus.NOT_FOUND | 404 | 페이지를 찾을 수 없음 |
나머지 HTTP 상태 코드 정리 보고 오기... |
정의
신호만 보낼 수 도 있다.
new ResponseEntity<>(신호);
new ResponseEntity<>(배열[객체] , 신호);
예제
@PostMapping("/object-body")
public ResponseEntity<Object> getObjectRequestBody(@RequestBody Member member) {
List<Member> list = new ArrayList<>(); // 지금은 sql 없기 때문에 list에 넣음
list.add(member);
return new ResponseEntity<>(list, HttpStatus.OK);
}
}
< 2 >
POST (INSERT) 최종 버전 1번
ResponseEntity의 생성자를 활용한 예제
@PostMapping("경로")
public ResponseEntity<Object> 함수명(@RequestBody Member member) {
try {
List<Member> list = new ArrayList<>();
list.add(member);
if(member != null) { // INSERT 요청이 (member 객체가 잘들어가 있다면) 잘됬다면
return new ResponseEntity<>(list,HttpStatus.OK);
} else { // INSERT 요청이 실행은 됬으나 member 객체가 안 들어있다면
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
} catch (Exception e) { // 서버가 다운 될 정도면 잡음
// TODO : BAD_REQUEST(400)
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
}
POST (INSERT) 최종 버전 2번
ResponseEntity의 메서드를 활용한 예제
( build() : 디자인 패턴 중 빌더 패턴 - 생성자 대신 사용하는 기능 )
@PostMapping("/object-body")
public ResponseEntity<List<Member>> getObjectRequestBody(@RequestBody Member member) {
try {
List<Member> list = new ArrayList<>();
list.add(member);
if(member != null) { // INSERT 요청이 (member 객체가 잘들어가 있다면) 잘됬다면
return ResponseEntity.ok().body(list); // ok 응답 코드와 , HttpBody 에 list 전달
} else { // INSERT 요청이 실행은 됬으나 member 객체가 안 들어있다면
return ResponseEntity.noContent().build(); // 마지막은 build() 함수 사용
}
} catch (Exception e) {
// TODO : BAD_REQUEST(400)
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); // 마지막은 build() 함수 사용
}
}
GET (SELECT) 최종 버전 3번
ResponseEntity의 생성자를 활용한 예제
@GetMapping("/경로")
public ResponseEntity<Object> getAll() {
try{
List<객체> list = 객체Service.findAll();
if(list.isEmpty() == false) {
return new ResponseEntity<>(list , HttpStatus.OK);
} else {
// TODO: 조회는 성공했으나 데이터가 없음
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
'SpringBoot > code' 카테고리의 다른 글
SpringBoot - @Slf4j (0) | 2023.10.10 |
---|---|
SpringBoot - Logback , Log4jdbc (로깅) 설정 (0) | 2023.10.06 |
SpringBoot - @RequestBody (0) | 2023.10.06 |
SpringBoot - @RestController (0) | 2023.10.06 |
SpringBoot - 웹 cors에 대한 config 파일 (0) | 2023.10.06 |