[게시판] 게시글 전체 목록 조회

2023. 1. 25. 15:52프로젝트/라이프 챌린지

728x90
SMALL

게시글이 작성이 되었으면 당연하게도 게시글을 조회하기 이전에 작성된 게시글들의 목록이 출력이 되어야한다.

간단한 게시글 전체 목록 조회 api를 구현해보자.

 


PostController

// 게시글 전체 목록 조회
@GetMapping("/post/readlist")
public ResponseEntity<ResponseBody> postReadList(HttpServletRequest request){
    log.info("게시글 전체 목록 조회 - 접근 유저 : {}", jwtTokenProvider.getMemberFromAuthentication().getNickname());

    return postService.postReadList(request);
}

작성된 게시글들 전체 목록 조회 api를 만들어준다.

  • 조회만 할 것이기 때문에 GetMapping method 타입으로 만들어준다.
  • 전체 조회라서 따로 post_id를 받을 필요도 없이 조회하고자 하는 Request만 Service 단에 인자값으로 넘겨준다.

 

 

PostService

// 게시글 전체 목록 조회
public ResponseEntity<ResponseBody> postReadList(HttpServletRequest request) {

    // 유저 검증
    Member auth_member = checkAuthentication(request);

    // 작성된 모든 게시글 리스트화
    List<Post> postList = queryFactory
            .selectFrom(post)
            .fetch();

    // 최종적으로 리스트화된 게시글들이 반환될 List
    List<HashMap<String, String>> postListSet = new ArrayList<>();

    // 전체 게시글들을 하나씩 조회
    for(Post each_post : postList){

        // HashMap으로 조회된 게시글 일부 정보가 담김
        HashMap<String, String> postSet = new HashMap<>();

        postSet.put("post_id", each_post.getPost_id().toString()); // 게시글 id
        postSet.put("title", each_post.getTitle()); // 게시글 제목
        postSet.put("nickname", each_post.getMember().getNickname()); // 게시글 작성자 닉네임
        postSet.put("viewcnt", each_post.getViewcnt().toString()); // 게시글 조회수
        postSet.put("createdAt", each_post.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy.MM.dd hh:mm"))); // 게시글 생성일자

        // 최종 반환 리스트에 담음
        postListSet.add(postSet);

    }

    return new ResponseEntity<>(new ResponseBody(StatusCode.OK.getStatusCode(), StatusCode.OK.getStatus(), postListSet), HttpStatus.OK);
}

게시글 전체 목록을 불러오는 Service 로직을 만들어준다.

  • checkAuthentication 을 통해 유효 Member 객체 반환.
  • fetch()를 통해 모든 게시글 정보를 받아와서 List에 넣어준다.
  • 게시글 목록을 출력받을 때 모든 정보가 필요하지 않고 일부의 정보들만 필요하기 때문에 HashMap으로 출력하고자 하는 정보들을 넣어주고 그 HashMap을 List화하여 반환해주기로 한다.
  • postListSet은 최종적으로 반환되어질 List이다.
  • List 화하여 모아진 post들을 for each문으로 하나씩 조회하여 필요한 정보들을 HashMap에 넣어주고, 넣어진 HashMap을 postListSet에 담아준다.
  • postListSet을 최종적으로 반환한다.

 

 

포스트맨으로 확인.

# 토큰을 넣어 게시글 전체 목록 조회

 

정상적으로 모든 게시글이 출력되는 것을 확인할 수 있다.

 

728x90
반응형
LIST

'프로젝트 > 라이프 챌린지' 카테고리의 다른 글

[댓글] 댓글 작성  (0) 2023.01.28
[게시판] 게시글 좋아요 / 좋아요 취소  (0) 2023.01.25
[게시판] 게시글 조회  (0) 2023.01.25
[게시판] 게시글 삭제  (0) 2023.01.25
[게시판] 게시글 수정  (0) 2023.01.25