์คํ๋ง์์๋ ResponseEntity๋ผ๋ ๊ฒ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์กด ์ ๊ฐ์ธ ํ๋ก์ ํธ์์ ์ ๋ ์๋์ ๊ฐ์ด ๊ทธ์ ๊ฐ ์์ฒด๋ฅผ ๋ฐํํ๊ณค ํ์์ต๋๋ค. @RestController ์ด๋ ธํ ์ด์ ์ ๋ฌ์๋๊ณ ๋ฐํ๊ฐ์ ๊ฐ์ฒด๋ก ํ๊ฒ ๋๋ค๋ฉด Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ต ๊ฐ์ฒด๋ฅผ JSON์ผ๋ก ๋ณํํ์ฌ ์ฃผ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ๋ฒ์ฒ๋ผ ๊ฐ์ฒด๋ฅผ return ํ๋ ๊ฒฝ์ฐ HTTP ์๋ต์ ์ ์ดํ ์ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํฉ๋๋ค.
@GetMapping
public List<PostResponseDto> findAllPosts() {
return postService.findAllPosts();
}
๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ธ API์์ ๋ฐํํ๋ ๋ฆฌ์์ค๋ฅผ ์๊ฐํด๋ณธ๋ค๋ฉด ๋จ์ํ ๊ฐ์ฒด Value๋ง ์์ง ์๊ณ ์ํ์ฝ๋, ์๋ต ๋ฉ์ธ์ง ๋ฑ์ด ํฌํจ๋์ด ์๋ค๋ ๊ฑธ ์ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋ต์ ๋ณด๋ผ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ด ResponseEntity์ ๋๋ค.
ResponseEntity๋ ๋ด๋ถ ํ๋ ๋ณ์๋ก status๋ฅผ ๊ฐ์ ธ์ผ ํ๊ธฐ์ ์์ฑ์์ status ๊ฐ์ ๋ฐ๋์ ์ถ๊ฐํด ์ฃผ์ด์ผ ํฉ๋๋ค.
๋ํ ์ ๋ค๋ฆญ์ ํตํด body ๋ถ๋ถ์ ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ง์ด๋ฃ์ด ์๋ตํ ์ ์์ต๋๋ค.
ResponseEntity๋ ๋งค๊ฐ๋ณ์๋ก body, HttpStatusCode ๋ฅผ ๋ด์ ์์ฑํ ์ ์์ต๋๋ค.
new ResponseEntity<>(body,httpStatusCode);
์ฐ์ ๊ฐ๋จํ๊ฒ ์ํ์ฝ๋์ ๋ฉ์ธ์ง๋ฅผ ๋ฐํํ๊ณ ์ถ๋ค๋ฉด
public class Message {
private int statusCode;
private String message;
}
์๋ต์ผ๋ก ๋ณด๋ผ ๊ฐ๋ค์ ๋ด์ ์ ์๋ ๊ฐ์ฒด๋ฅผ ํ๋ ์์ฑํ๊ณ
@GetMapping
public ResponseEntity<Message> test() {
Message message = new Message(HttpStatus.OK, "ResponseEntity ์๋ต ์ฑ๊ณต");
return new ResponseEntity<>(message,HttpStatus.OK);
}
์์๊ฐ์ด return ๊ฐ์ผ๋ก ResponseEntity์ body, statusCode๋ฅผ ์ ๋ฌํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉด
{
"statusCode": 200,
"message": "ResponseEntity ์๋ต ์ฑ๊ณต",
}
์์๊ฐ์ ์๋ต์ ๋ฐ์ ์ ์์ต๋๋ค.
public class Message<T> {
private int statusCode;
private String message;
private T data;
}
์์๊ฐ์ด data๋ฅผ ๋ด์ ํ๋ ๋ณ์๋ฅผ ์ถ๊ฐํ์ฌ
@GetMapping
public ResponseEntity<Message> findAllPosts() {
List<PostResponseDto> postResponseDtos = postService.findAllPosts();
Message message = new Message(HttpStatus.OK, "์ ์ฒด ๊ฒ์๋ฌผ ์กฐํ ์ฑ๊ณต",postResponseDtos);
return new ResponseEntity<>(message,HttpStatus.OK);
}
ResponsEntity๋ฅผ ๋ฐํํด ์ค๋ค๋ฉด, ์๋์ ๊ฐ์ด ์๋ต์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐํํ ์ ์์ต๋๋ค.
{
"httpStatus": "OK",
"message": "์ ์ฒด ๊ฒ์๋ฌผ ์กฐํ ์ฑ๊ณต",
"data": [
{
"id": 2,
"title": "title",
"content": "content",
"author": "jihyun",
"createdAt": "2023-09-05T02:23:04.44935",
"modifiedAt": "2023-09-05T02:23:04.44935"
},
{
"id": 1,
"title": "title",
"content": "content",
"author": "jihyun",
"createdAt": "2023-09-05T02:23:03.730723",
"modifiedAt": "2023-09-05T02:23:03.730723"
}
]
}
responseEntity๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์๋ ๋๊ฐ์ง๊ฐ ์์ต๋๋ค.
ํ๋๋ ์์์ ๋ค๋ค๋ new ํค์๋๋ฅผ ํตํ ์์ฑ์ ํธ์ถ์ด๊ณ ,
new ResponseEntity<>(body,httpStatusCode);
return ResponseEntity.ok()
.headers(headers)
.body(body);
์์๊ฐ์ด ๋ฉ์๋ ์ฒด์ด๋์ผ๋ก ์ฐ๊ฒฐํ์ฌ ResponseEntity๋ฅผ ์์ฑํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.