Spring 뉴스피드 구현 중 문제점

김현찬·2025년 5월 29일

첫 번째

원래 계획했던건 ResponseDto를 용도별로 분리하는 브랜치를 만들어서 작업한 후 기존에 작업했던 게시글 전체 조회, 단건 조회, 수정 브랜치 순서로 각각 이동하여 하나씩 구현하려 했는데, 이렇게 작업하면 게시글 전체 조회 기능을 구현할 때 단건 조회, 수정까지 함께 수정해야하는 문제가 생겼습니다. 따라서 Dto 용도별 분리 브랜치에서 한 번에 작업했습니다.

두 번째

게시글 전체 조회 기능에 페이징 기능을 추가하는 작업 중 컨트롤러에서

@GetMapping("/pages/{pageId}")
    public ResponseEntity<List<FindAllPostResponseDto>> findAllAPI(
            @PathVariable  int page,
            @RequestParam (defaultValue = "10") int size
    )

위와 같이 사용하려 했는데 MissingPathVariableException이발생했습니다. 말인 즉
@PathVariable 이 문제라 파악되어, 문제점을 찾다보니, 경로 변수와 @PathVariable 의 이름이 다르다는 사실을 확인했습니다.

이 후 다음과 같이 경로 이름을 수정하여, 해결했습니다.

		@GetMapping("/pages/{page}")
    public ResponseEntity<List<FindAllPostResponseDto>> findAllAPI(
            @PathVariable  int page,
            @RequestParam (defaultValue = "10") int size
    )

추가 수정

현재는 다음과 같이 변경되었습니다.

    @GetMapping
    public ResponseEntity<PageResponseDto<PostListResponseDto>> findAllPosts(
            @PageableDefault(page = 1, sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable
    )
    {
        PageResponseDto<PostListResponseDto> allPost = postService.findAllPosts(pageable);

        return new ResponseEntity<>(allPost, HttpStatus.OK);
    }

@PathVariable을 사용하지 않고, @PageableDefault를 사용해 기본값 할당 및 정렬 기능을 할당했습니다.

0개의 댓글