원래 계획했던건 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를 사용해 기본값 할당 및 정렬 기능을 할당했습니다.