이제 포스트를 작성하는 기능을 구현했으니 전체 조회하는 기능을 만들어보자.
Get은 Security 설정시 아무 설정을 해주지 않아서 모든 사용자가 접근 가능하다.
Security 설정을 회원가입을 구현할때 해주었다.
//list 목록 최신순
@ApiOperation(value = "게시글 전체조회기능")
@GetMapping("")
public Response<Page<PostOneResponse>> getPosts(@PageableDefault(size = 20, sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable){
return Response.success(postService.getPostsList(pageable));
}
/**
* 전체조회
*/
public Content getPostsList(Pageable pageable) {
// Pageing을 해서 담는다.
Page<Post> list = postRepository.findAll(pageable);
// Entity에서 Dto로 Stream을 통해 담는다.
List<PostOneResponse> listResponse = list.stream()
.map(post -> PostOneResponse.fromEntity(post)).collect(Collectors.toList());
//컨텐츠 객체에 담아서 리턴
Content content = new Content(listResponse, pageable);
return content;
}
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
public class PostOneResponse{
private Long id;
private String title;
private String body;
private String userName;
private LocalDateTime createdAt;
private LocalDateTime lastModifiedAt;
public static PostOneResponse fromEntity(Post post) {
return PostOneResponse.builder()
.id(post.getId())
.title(post.getTitle())
.body(post.getBody())
.userName(post.getUser().getUserName())
.createdAt(post.getCreatedAt())
.lastModifiedAt(post.getLastModifiedAt())
.build();
}
}
public interface PostRepository extends JpaRepository<Post, Long> {
}
리스트가 잘 나오는것을 확인 할 수 있다.
