1. 문제 발견
(새로고침 시 게시글이 제대로 출력되는 경우도 있고 출력되지 않는 경우도 생기는 문제)
2. 실행되고 있는 코드
(쿼리 파라미터로 전달되는 ticker 와 type 에 따라 게시글을 출력해주는 코드)
@GetMapping
public ResponseEntity<?> getStockByTicker(@RequestParam("ticker") String ticker,
@RequestParam(value = "type", defaultValue = "allPost") String type) {
try {
List<PostDTO> postDTOS;
if ("nasdaq".equals(ticker) || "undefined".equals(ticker)) {
System.out.println("1111");
if ("bestPost".equals(type)) {
System.out.println("2222");
postDTOS = postService.readBestPost(null);
} else {
System.out.println("3333");
postDTOS = postService.readDefault();
}
return ResponseEntity.ok(postDTOS);
} else {
Optional<StockTickers> stockTickers = stockSearchService.getStockByTicker(ticker);
if (stockTickers.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
StockTickers stockTicker = stockTickers.get();
if ("bestPost".equals(type)) {
postDTOS = postService.readBestPost(stockTicker);
} else {
postDTOS = postService.read(stockTicker);
}
StockDataDTO stockDataDTO = webScrapingService.scrapeStockData(stockTicker);
LocalDate date = LocalDate.now();
int postCount = stockOpinionService.getRealtimePostCount(stockTicker.getStockSymbol());
int bullishCnt = stockOpinionService.getRealtimeBullishOpinion(stockTicker.getStockSymbol());
int bearishCnt = stockOpinionService.getRealtimeBearishOpinion(stockTicker.getStockSymbol());
RealtimeStatDTO realtimeStatDTO = new RealtimeStatDTO(date, postCount, bullishCnt, bearishCnt);
List<WeeklyPostCountDTO> weeklyPostCountDTO = WeeklyPostCountDTO.of(stockOpinionService.getWeeklyPostCount(stockTicker.getStockSymbol()), realtimeStatDTO);
DataBundleDTO stockPostDTO = new DataBundleDTO(stockDataDTO, postDTOS, realtimeStatDTO, weeklyPostCountDTO);
searchTickerProducer.sendSearchQuery(ticker);
return ResponseEntity.ok(stockPostDTO);
}
} catch (Exception e) {
// 구체적인 예외를 처리하는 것이 더 좋습니다.
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("An error occurred");
}
}
3. 코드 상 문제 발견
원래는 아래 콘솔창과 같이 실행되어야 하는데

아래 콘솔창처럼 코드가 반복하여 실행되는 문제가 발생하였다.

4. 문제 해결
기존 라우터 코드
{
path: '/',
component: HomePage,
redirect: '/stock?ticker=nasdaq&type=allPost', // 기본 URL에서 /stock?ticker=nasdaq로 리다이렉트
props: route => ({ ticker: route.query.ticker, type: route.query.type })
},
{
path: '/stock',
component: HomePage,
props: route => ({ ticker: route.query.ticker, type: route.query.type })
},
수정한 코드
{
path: '/',
redirect: '/stock'
},
{
path: '/stock',
component: HomePage,
props: route => ({ ticker: route.query.ticker, type: route.query.type })
},
5. 문제 원인
첫 번째 코드에서는 /에서 /stock?ticker=nasdaq&type=allPost로 리다이렉트하는 과정에서
ticker와 type 값을 URL 파라미터로 전달하고, HomePage 컴포넌트는 이를 props로 받아 사용하는데
이 과정에서 중복된 파라미터가 전달된 것 같다.
'Vue' 카테고리의 다른 글
| Vue 프로젝트 생성하기 (0) | 2025.05.06 |
|---|---|
| [문제 해결] 글을 작성하는 컨테이너에 긴 글을 쓰면 줄바꿈되지 않는 문제 (0) | 2025.02.27 |
| [문제 해결] Maximum call stack size exceeded 에러발생 (0) | 2025.02.12 |
| [문제 해결]자식 요소에 flex 비율을 지정해도 부모 요소의 100% 채워지지 않는 문제 (1) | 2025.02.03 |