아래는 "키워드 랭킹 API" 예시(일간/주간/월간)를 중심으로,
컨트롤러서비스DTO 설계를 어떻게 할지에 대한 전략을 단계별로 정리한 것입니다.
다양한 상황에서 실무 코드가 어떻게 변할 수 있는지, 각 방식의 장점/단점 그리고 적합한 시나리오를 함께 살펴보겠습니다.
java
복사편집
@GetMapping("/daily")
public ResponseEntity<KeywordRankingListResponseDto> getDailyRanking(
@RequestParam(required = false) String platform,
@RequestParam String currentTime
) {
Platform enumPlatform = Platform.valueOf(platform);
KeywordCategory category = KeywordCategory.valueOf("전체");
return ResponseEntity.ok(
trendingService.getRealtimeByFilterDays(1, enumPlatform, category, currentTime)
);
}
@GetMapping("/weekly")
public ResponseEntity<KeywordRankingListResponseDto> getWeeklyRanking(
@RequestParam(required = false) String platform,
@RequestParam String currentTime
) {
// 거의 동일, days만 7
Platform enumPlatform = Platform.valueOf(platform);
KeywordCategory category = KeywordCategory.valueOf("전체");
return ResponseEntity.ok(
trendingService.getRealtimeByFilterDays(7, enumPlatform, category, currentTime)
);
}
서비스 메서드:
java
복사편집
public KeywordRankingListResponseDto getRealtimeByFilterDays(
int days, Platform platform, KeywordCategory category, String currentTime
) {
// ...
}