반응형
오늘 전체 게시글 목록 조회 API를 구현하다가 리턴 타입이 너무 길어져서 불편해졌다.
@GetMapping
public ResponseEntity<RootResponse<Page<PostDetailResponse>>> getPosts(
Pageable pageable,
@RequestParam(name = "query", required = false, defaultValue = "") String query) {
Page<PostDetailResponse> postList = postService.getPosts(pageable, query);
return ResponseEntity.ok(RootResponse.<Page<PostDetailResponse>>builder()
.data(postList)
.build());
}
그래서 아래와 같이 리턴타입을 <?> 로 바꾸고, 리턴에 제네릭을 없앴다.
@GetMapping
public ResponseEntity<?> getPosts(
Pageable pageable,
@RequestParam(name = "query", required = false, defaultValue = "") String query) {
Page<PostDetailResponse> postList = postService.getPosts(pageable, query);
return ResponseEntity.ok(RootResponse.builder()
.data(postList)
.build());
}
튜터님께 찾아가서 이렇게도 쓰는지를 물어봤었는데, 이건 개발자 바이 개발자 라고 했다.
튜터님 개인적인 의견으로는 내부의 타입을 확인하기 위해 서비스를 한번 더 확인해야하니 명시적으로 타입을 지정해주는 전자를 선호한다고 했다.
나도 명시적으로 타입을 알려주는 것을 좋아해서 전자를 선호하는데, 그래서 var 도 안 쓴다.
아래는 서비스 부분 코드.
public Page<PostDetailResponse> getPosts(Pageable pageable, String query) {
if (query.isBlank()) {
return postRepository.findAll(pageable)
.map(PostDetailResponse::of);
}
return postRepository.findAllByContentContaining(query, pageable)
.map(PostDetailResponse::of);
}
반응형
'TIL ✍️' 카테고리의 다른 글
23년 12월 8일(금요일) - 48번째 TIL : intellij file encoding change (0) | 2023.12.08 |
---|---|
23년 12월 7일(목요일) - 47번째 TIL (0) | 2023.12.07 |
23년 12월 5일(화요일) - 45번째 TIL : AOP (1) | 2023.12.05 |
23년 12월 4일(월요일) - 44번째 TIL (2) | 2023.12.04 |
23년 12월 1일(금요일) - 43번째 TIL : validation 검증하기 (0) | 2023.12.01 |