특정 유저의 데이터를 보내고 싶을때 리포지토리에서 가져온 걸 그대로 보내면 비밀번호까지 보내버린다
DTO를 만들어서 보내고 싶은 데이터만 보내자
• dto를 사용하면 데이터 타입체크가 쉽고 재사용성이 올라간다
보내고 싶은 데이터가 다른 api가 있을때 데이터에 따른 생성자를 만들거나 하는 방식으로 유연하게 보내줄 수 있다
id와 닉네임만 전달할 dto를 만든다
class MemberDto {
public String username;
public String displayname;
MemberDto(String username, String displayname){
this.username = username;
this.displayname = displayname;
}
}
서비스에 dto를 가져와서 데이터를 담을 코드를 만든다
public MemberDto getMemberInfo(Long id){
Optional<Member> member = memberRepository.findById(id);
if (member.isPresent()){
Member result = member.get();
return new MemberDto(result.getUserName(),result.getDisplayName(), result.getId());
}
else return null;
}
컨트롤러에 연결해서 보내고 싶은 정보만 보낼 수 있다
// 유저 정보 보내기, 그대로 member 데이터 전부를 보내면 비밀번호까지 보내버린다
@GetMapping("/user/{id}")
@ResponseBody
MemberDto getUser(@PathVariable Long id){
return memberService.getMemberInfo(id);
}
'스프링 쇼핑몰 만들어보기' 카테고리의 다른 글
aws S3 이미지 업로드 (0) | 2024.05.05 |
---|---|
페이지 나누기 (pagination) (0) | 2024.05.05 |
스프링 시큐리티, 회원가입 기능 만들기, 외부 클래스 DI (0) | 2024.05.04 |
세션 & 토큰 (0) | 2024.05.03 |
삭제 기능 (Ajax 쿼리스트링, getmapping?) (0) | 2024.05.03 |