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