본문 바로가기
스프링 쇼핑몰 만들어보기

DTO 만들어서 데이터 보내기

by hoshi03 2024. 5. 5.

특정 유저의 데이터를 보내고 싶을때 리포지토리에서 가져온 걸 그대로 보내면  비밀번호까지 보내버린다

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);
}