Spring Boot

[Spring] HTTP 응답 시 Message body에 직접 정보 넣기 - @ResponseBody, ResponseEntity<>

HEY__ 2022. 8. 8. 16:17
728x90

이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다!

 

⛅️ HTTP 응답 시 message body에 메세지를 직접 입력

HTTP API를 제공하는 경우

  • HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 한다.
  • 이 경우에는 HTTP message body에 JSON 같은 형식으로 데이터를 실어 보낸다.

 

✅ 참고

  • 정적 리소스나 뷰 템플릿을 거치지 않고 HTTP message body를 전달하는 방식이다.

 


⛅️ @ResponseBody

단순 텍스트 반환

  • 메서드의 위에 @ResponseBody 어노테이션을 추가하고, 메서드의 반환 타입을 String으로 설정한다.
  • 메서드가 반환한 String이 HTTP message body에 그대로 넣어져 전달된다.
@ResponseBody
@GetMapping("/response-body-string")
public String responseBody() {
	return "ok";
}

 

 

JSON(객체) 형태 반환

  • JSON은 {"username"="userA", "age"="20"}과 같은 형태로 전달된다.
  • 객체의 변수에 값을 넣고, 객체 자체를 반환하면 JSON 형태로 HTTP message body에 넣어져 전달된다.
@ResponseBody
@GetMapping("/response-body-json")
public MemberData responseBodyJson() {
	MemberData memberData = new MemberData();
	memberData.setUsername("userA");
	memberData.setAge(20);
	return memberData;
}

 

HTTP 상태코드 설정하기

@ResponseStatus(HttpStatus.HTTP상태코드)
  • @ResponseStatus 어노테이션을 이용하여 HTTP 상태코드를 직접 설정할 수 있다.
  • HttpStatus.OK, HttpStatus.Moved Permanently와 같이 상태 코드들이 정의되어 있다.
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@GetMapping("/response-body-json")
public MemberData responseBodyJson() {
	MemberData memberData = new MemberData();
	memberData.setUsername("userA");
	memberData.setAge(20);
	return memberData;
}

 


⛅️ ResponseEntity<>

단순 텍스트 반환

  • HttpEntity를 상속받은 ResponseEntity<>를 통해 HTTP message body에 메세지를 넣을 수 있다.
  • 반환값을 ResponseEntity<String>으로 설정하고,
    ResponseEntity<>("텍스트", HTTP 상태코드) 형태를 반환한다.
  • "텍스트"의 내용이 HTTP message body에 담겨지고, HTTP 상태 코드를 전달하도록 한다.
@GetMapping("/response-body-string-v2")
public ResponseEntity<String> responseBodyV2() {
	return new ResponseEntity<>("ok", HttpStatus.OK);
}

 

 

JSON(객체) 형태 반환

  • JSON 형태로 HTTP message body에 전달하기 위해서는 객체 형태로 전달하면 된다.
  • 메서드의 반환형은 ResponseEntity<클래스명>으로 설정하고,
    ResponseEntity<>(객체, HTTP 상태코드) 형태로 반환한다.
  • "객체"의 내용이 HTTP message body의 JSON 형태로 담겨지고, HTTP 상태코드를 전달하도록 한다. 
// JSON 반환
@GetMapping("/response-body-json")
public ResponseEntity<MemberData> responseBodyJson() {
	 MemberData memberData = new MemberData();
	 memberData.setUsername("userA");
	 memberData.setAge(20);
	 return new ResponseEntity<>(memberData, HttpStatus.OK);
}

 

 

 

 

728x90