개발
Page<Entity>에서 Page<DTO>로 전환
시간의 효율화
2022. 3. 14. 19:03
https://spring.io/guides/tutorials/rest/
Rest API의 HATEOAS를 구현하기 중에 Page<Entity>를 return 하니, 아이디와 비밀번호가 다 노출되는 상황이 발생했다.
Page<Qna> qna = qnaService.getQnaAll(pageable);
PagedModel<Qna> qnaModel = pagedResourcesAssembler
.toModel(qna, qnaModelAssembler);
return new ResponseEntity<>(qnaModel,HttpStatus.OK);
그래서 Page<Entity>를 Page<DTO>로 전환하는 작업이 필요했다.
Page의 map메서드와 method reference operator 활용해서 해결했다.
DTO클래스에 entity를 dto로 전환해주는 스새틱 메서드가 있어야 사용 가능하다.
public class QnaResponseDto {
private Long id;
private String title;
private String content;
private String username;
private String nickname;
private List<QnaComment> comment;
public static QnaResponseDto toDto(final Qna qna) {
return QnaResponseDto.builder()
.id(qna.getId())
.title(qna.getTitle())
.content(qna.getContent())
.comment(qna.getComment())
.nickname(qna.getUser().getNickname())
.username(qna.getUser().getUsername())
.build();
}
}
아래처름 하니까 Page<Entity>에서 Page<DTO> 전환이 가능했다.
Page<QnaResponseDto> qnaResponseDto = qnaService.getQnaAll(pageable).map(QnaResponseDto::toDto);
출처: