ResponseEntity 란?
- 클라이언트로 부터 받은 요청에 대한 백엔드 내부적의 처리 상태가 원활했는지,
문제가 일어났는지에 대해 상태코드를 클라이언트에게 응답함과 동시에
각 상태에 대해 JSON 형식으로 원하는 내용을 전송하기 편리하게 설계된 스프링의 기능.
@GetMapping("/api/members/{id}")
public ResponseEntity<Object> member(@PathVariable Long id,
HttpServletResponse response) throws IOException {
Member member = memberDao.selectById(id);
if(member == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(new ErrorResponse("no member"));
}
return ResponseEntity.status(HttpStatus.OK).body(member);
}
먼저 해당 코드는 지정해준 RestMemberController 내 매핑 메소드임.
이 코드는 각 회원마다 가지고 있는 고유 ID 값에 대해 가변적으로 매핑하여 매핑된 해당 회원정보를 JSON 형태로 응답해주는 코드임.
현재 리턴타입을 ResponseEntity로 지정해주고 있는것을 볼 수 있음.
그리고 코드에서 핵심적인 부분이 어디냐 하면
이 부분인데 위에서 ResponseEntity에 대해 설명한 것을 보다시피
클라이언트로 부터 받은 요청에 대한 백엔드 내부적의 처리 상태가 원활했는지, 문제가 일어났는지에 대한 상태코드를 반환하고 있음.
매핑된 ID값을 이용하여 DB에서 해당되는 회원정보를 가져오는데 만약에 회원정보를 가져오지 못한다면
ResponseEntity.status(HttpStatus.NOT_FOUND)를 리턴한다.
※ NOT_FOUND: 상태코드 404
HttpStatus를 리턴하게 되면 클라이언트에서의 요청 처리상태 자체를 리턴할 수 있다.
동시에 body 메소드로 체이닝을 해서 Http Body에 내용을 담아준다. 지금 코드는 에러메시지를 담고있음.
지금 메소드가 속해있는 해당 컨트롤러는 RestController이기 때문에 Http Body에 담는 내용은 JSON으로 리턴됨.
IF문을 벗어나서 Member 객체(회원정보)를 잘 가져온다면 HttpStatus.OK 라는 처리 상태와 회원정보를 그대로 리턴해줌.
※ OK: 상태코드 200
지금은 테스트를 위해서 JSON을 브라우저에서 받고 있지만,
자바스크립트 코드 내에서 요청을 실행하고 받은 JSON 데이터를 가지고 지지고 볶고 하면 된다.
'웹개발 > Java, Spring' 카테고리의 다른 글
[Spring Boot] 스프링 부트 JWT 인증 방식 구현 (0) | 2024.03.04 |
---|---|
[Spring] PropertyPlaceholderConfigurer 클래스를 이용한 프로필 설정 파일 불러오기 (0) | 2023.08.20 |
[Java] 웹 내 TIF 이미지 → JPG 이미지로 변환하여 출력하는 방법 (0) | 2023.07.30 |
[Spring] 스프링 Interceptor를 간단한 MVC 예제에 적용해보기 (0) | 2023.06.25 |
[Spring] 스프링에서 제공하는 객체 검증 기능을 이용하여 회원가입 기능 검증하기 (0) | 2023.06.17 |