본문 바로가기
728x90
320x100

💻 뚝딱뚝딱105

[개발일지 #029] 책(Book) - Spring WebClient로 외부 API 연동: KakaoBookClient 구현 🎯 오늘의 목표책(Book) - Spring WebClient로 외부 API 연동: KakaoBookClient 구현⚙️ 진행한 작업책(Book) - Spring WebClient로 외부 API 연동: KakaoBookClient 구현📌 build.gradle : 의존성 추가dependencies { implementation 'org.springframework.boot:spring-boot-starter-webflux'}spring-boot-starter-web만으로는 WebClient가 포함되지 않아서, WebClient를 쓰려면 반드시 spring-boot-starter-webflux 의존성을 추가해야 함. ✅ Spring WebClient?WebClient는 Spring에서 제공하는 최신 .. 2025. 5. 1.
[개발일지 #028] 좋아요 순 피드 조회 (주간/월간/연간/누적) 🎯 오늘의 목표좋아요 순 피드 조회 (주간/월간/연간/누적)⚙️ 진행한 작업좋아요 순 피드 조회 (주간/월간/연간/누적)📌 좋아요 순 피드 조회하는 방법1️⃣ DB 직접 카운트 + 정렬방식: SELECT * FROM feed ORDER BY like_count DESC장점:간단하고 JPA, QueryDSL로 쉽게 구현 가능별도 인프라(Redis) 없이 DB만으로 해결단점:피드가 많아질수록 ORDER BY like_count DESC 쿼리 부담 커짐실시간으로 TOP N 조회할 때 성능 이슈 발생좋아요수가 자주 변하면 정렬 부담 증가2️⃣ Like 테이블 집계 쿼리 + 정렬방식 : SELECT feed_id, COUNT(*) FROM like GROUP BY feed_id ORDER BY COUNT(*.. 2025. 5. 1.
[개발일지 #027] 신고(Report) 누적 시, 블라인드 처리 🎯 오늘의 목표신고(Report) 누적 시, 블라인드 처리⚙️ 진행한 작업신고(Report) 누적 시, 블라인드 처리 🛠️ 개발내용📌 피드(Feed) 엔티티 수정@Column(nullable = false)private boolean isBlinded = false;/** 피드 블라인드 처리 */public void blind() { this.isBlinded = true;}/** 블라인드 해제 (선택적으로 추가) */public void unblind() { this.isBlinded = false;} 📌 ReportRepository 수정long countByFeed(Feed feed); 📌 신고 횟수 관리application.ymlreport: blind-threshol.. 2025. 5. 1.
[개발일지 #026] 신고(Report) 도메인 구현 및 단위테스트 🎯 오늘의 목표신고(Report) 도메인 개발⚙️ 진행한 작업신고(Report) 엔티티 생성신고(Report) 레파지토리 생성신고(Report) 서비스 생성신고(Report) 관련 예외 생성신고(Report) 도메인 단위테스트🛠️ 개발내용📌 신고(Report) 엔티티 생성package ddururi.bookbookclub.domain.report.entity;import ddururi.bookbookclub.domain.feed.entity.Feed;import ddururi.bookbookclub.domain.report.enums.ReasonType;import ddururi.bookbookclub.domain.user.entity.User;import jakarta.persistence.*.. 2025. 5. 1.
[개발일지 #025] 좋아요(Like) 토글 기능으로 변경하기 🎯 오늘의 목표좋아요 기능을 토글기능으로 변경하기⚙️ 진행한 작업LikeService 수정LikeController 수정🛠️ 개발 내용기존 좋아요 누르기/좋아요 취소로 나뉘어져 있던 좋아요 기능을 하나로 합쳐 토글기능으로 변경할 예정왜 변경하나요?기존에는 두 개의 엔드포인트가 필요했는데 토글 방식으로 전환하면 API 인터페이스가 단순해짐기존 방식에는 좋아요 상태를 먼저 조회한 후, 상태에 따라 API 호출이 필요했는데, 토글 방식은 내부에서 상태를 확인하고, 처리하기 때문에 클라이언트가 별도의 상태를 확인없이 호출 할수 있어 로직이 명확함 📌 LikeService 수정 /** * 좋아요 토글 기능 * - 이미 좋아요 되어 있으면 삭제 (취소) * - 좋아요 안 되어 있으면.. 2025. 5. 1.
[개발일지 #024] JWT 토큰이 없는데도 200 OK 가 뜬다? (해결방법) 🎯 오늘의 목표JWT 토큰이 없는데도 200 OK 가 뜨는 문제 해결하기⚙️ 진행한 작업JwtAuthenticationFilter 수정하기🛠️ 문제 상황API 테스트를 하다보니까 분명 에러가 나야 하는 상황인데 200 OK 응답코드를 반환함 알고보니 JWT 토큰을 헤더에 넣지 않고 테스트를 해서 그런건데, 그럼 이런 상황에서는 401, 403이 떠야 정상인데 200 OK를 반환 하고 있어 이를 수정해보려 함. 그대로 둔다면 문제상황이 발생했을 때 디버깅 하기가 아주 어려워지기 때문에...! 📌 JwtAuthenticationFilter문제는 JwtAuthenticationFilter.Java였는데 코드를 살펴보면 유효하지 않은 토큰이든, 토큰이 없든 예외도 없고 그냥 컨트롤러로 넘어감. 결국 .. 2025. 4. 30.
728x90
320x100