안녕하세요, Brad입니다. 오늘 미션을 진행하면서 배운 내용 정리할게요.
- RequestBody와 ResponseBody
@RequestBody
가 HTTP 요청의 body의 내용을 자바의 객체로 만들어주는 일을 했더라면 @ResponseBody
는 자바의 객체를 HTTP 요청의 body로 만들어주는 역할을 합니다.
REST에서 새로운 Resource를 왜 자꾸 만들어줄까요?
- 새로운 값을 바로 넣어줌으로써 테스트하기 위해 사용하는 것 같습니다.
- 이렇게 함으로써 좋은 점은 반환되는 데이터값을 활용하여
ApiUserAcceptanceTest
에서는 테스트에 활용하고 있었습니다. - 예를들어
User
생성시 Location에 해당 데이터의 경로를 반환하는 데이터를 얻을 수 있었기 때문에 해당 경로를 이용하여 update 테스트를 할 수 있었습니다.
왜 REST API를 써야할까요?
- 대충 어떤것이 REST API인지 느낌을 얻었지만 왜 사용하는지 이해하지 못했습니다. 하지만 어떤 블로그에서 REST API를 사용하지 않았을 때 어떻게 되는지 보여줌으로써 조금이나마 이해할 수 있었습니다.
- 현재 저희는 Mustache라는 Handler를 이용하여 Controller에서 Model에 넣은 값으로 뷰에 데이터를 넣고 있습니다. 얼핏 보기엔 프론트와 백엔드가 분리되어 있는 것처럼 보이지만 사실은 아니었습니다.
왜 그럴까요?
- 그 부분은 Handler내에 넣는 데이터가 사실은 자바 코드를 통해서 호출하기 때문입니다. 객체에서 데이터를 꺼내는 것처럼 사용되지 않습니까?
- 하지만 REST API를 사용하면 해당 데이터를 정의된 질서, 규칙에 맞게 사용하면 JSON타입으로 데이터를 받을 수 있습니다. 이렇게 된다면 프론트는 JSON을 통해 어떻게 값이 전달되는지 정확하게 확인하여 가공하여 뷰에 띄워줄 수 있고, 백엔드는 뷰에 사용되는 자바코드에 더이상 관여하지 않아도 될 것입니다.
ResponseEntity<>
의 제네릭으로 List of Object를 받고 싶다면 어떻게 서버로 요청을 보낼까요?- 두가지 방법이 있습니다. 참고
ResponseEntity<List<User>> response = template().exchange("/api/users", HttpMethod.GET, null, new ParameterizedTypeReference<List<User>>(){});
- 아래와 같은 DTO 클래스를 하나만들어서 RestController에서도 그 DTO에 넣어서 보냅니다.
public class UserList { private List<User> users; public UserList() { users = new ArrayList<>(); } public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } }
'TIL' 카테고리의 다른 글
Today's Dev Notes(2018-12-19) (0) | 2018.12.19 |
---|---|
Today's Dev Notes(2018-12-17) (0) | 2018.12.17 |
Today's Dev Notes(2018-12-13) (0) | 2018.12.14 |
Today's Dev Notes(2018-12-12) (0) | 2018.12.12 |
Today's Dev Notes(2018-12-11) (0) | 2018.12.11 |