728x90

ResponseEntity 란?

  - 클라이언트로 부터 받은 요청에 대한 백엔드 내부적의 처리 상태가 원활했는지, 

    문제가 일어났는지에 대해 상태코드를 클라이언트에게 응답함과 동시에

    각 상태에 대해 JSON 형식으로 원하는 내용을 전송하기 편리하게 설계된 스프링의 기능. 

 

 

먼저 클라이언트와 HTTP 통신을 위해 컨트롤러를 RestController로 지정

 

@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로 지정해주고 있는것을 볼 수 있음.

 

그리고 코드에서 핵심적인 부분이 어디냐 하면

핵심코드

이 부분인데 위에서 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 

 

id 1에 해당하는 회원정보가 존재할 때

 

 

id 3에 해당하는 회원정보가 존재하지 않을 때

지금은 테스트를 위해서 JSON을 브라우저에서 받고 있지만,

자바스크립트 코드 내에서 요청을 실행하고 받은 JSON 데이터를 가지고 지지고 볶고 하면 된다.

728x90