28. id로 select 테스트
by 볼빵빵오춘기DummyControllerTest
// {id} 주소로 파라미터를 전달받을 수 있음.
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id){
// user/100을 찾으면 내가 DB에서 못찾아오게 되면 user가 null이 될 것 아냐?
// 그럼 return null이 리턴 되잖아.. 그럼 프로그램에 문제가 있지 않겠니..?
// Optional로 너의 User객체를 감써서 가져올테니 null인지 아닌지 판단해서 return
// 람다식 x
User user = userRepository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>() {
@Override
public IllegalArgumentException get() {
return new IllegalArgumentException("해당 유저는 없습니다.");
}
});
// 람다식
// User user = userRepository.findById(id).orElseThrow(()-> {
// return new IllegalArgumentException("해당 유저는 없습니다.");
// });
// 요청 : 웹 브라우저
// user 객체 = 자바 오브젝트
// 변환(웹 브라우저가 이해할 수 있는 데이터)-> json(Gson라이브러리)
// 스프링부트 = MessageConverter라는 애가 응답시에 자동 작동
// 만약에 자바 오브젝트를 리턴하게 되면 MessgaeConverter가 Jckson 라이브러리를 호출해서
// user 오브젝트를 json으로 변환해서 브라우저에게 던져준다.
return user;
}
실행 결과
DB에 해당 id의 유저가 있는 경우
DB에 해당 id의 유저가 없는 경우
알 수 있는 점
요청은 웹 브라우저에서 했고 DummyController는 @RestController 어노테이션이 붙어 있으므로 html파일이 아니라 data를 리턴해준다. 하지만 DummyController에서 return을 오브젝트로 했다.
그러면 웹 브라우저에서는 java객체를 이해할 수 없기 때문에 결과가 출력되지않아야한다.
하지만 실행 결과를 보면 data가 출력되는 것을 확인가능하다.
🤔 why?
스프링부트에서 MessageConverter라는 애가 응답시에 자동 작동하여 자바 오브젝트를 리턴하게 되면 MessgaeConverter가 Jckson 라이브러리를 호출해서 user 오브젝트를 json으로 변환해서 브라우저에게 던져준다.
⇒ 스프링부트의 MessageConverter가 자바객체를 변환(웹 브라우저가 이해할 수 있는 데이터)-> json(Gson라이브러리)으로 리턴해서 보여준것이다.
개발자 도구를 통해 해당 데이터 타입을 확인 가능하다.
'강의 따라하기 > blog' 카테고리의 다른 글
30. update 테스트 (0) | 2024.01.02 |
---|---|
29. 전체 select 및 paging 테스트 (0) | 2024.01.02 |
27. 회원가입을 위한 enum 사용법 (0) | 2024.01.01 |
26. 회원가입 위한 insert 테스트 (0) | 2024.01.01 |
25. JSON 사용법(JSON을 사용하는 이유) (0) | 2024.01.01 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기