[TIL] 37일차 _ 뉴스피드 프로젝트 #3

Seoyeon Lee·2025년 11월 25일

Today I Learned ...

오늘은 코드카타 SQL 56번 문제를 풀고, 뉴스피드 프로젝트의 필수 구현 부분을 마무리했다!


🗒️ 코드카타 #30

드디어 코드카타 30번째!!
사실 오늘은 팀 프로젝트가 너무 바빠서.. SQL 1문제만 풀고 끝냈다...
오늘 푼 SQL 문제는 그냥 where절에 like를 써서 특정 문자를 포함하는 테이터를 필터링하는 것이었다.

오늘 푼 문제와 풀이는 깃허브를 통해 업로드해두었다.
GitHub 보러가기


🖥️ 뉴스피드 프로젝트 #3

오늘 뉴스피드 프로젝트의 필수 구현 부분을 마무리했다!
그리고 도전 과제의 와이어프레임을 만들고, ERD도 만들고, API 명세서도 만들었다!!

나는 오늘 유저의 soft delete 기능을 구현했다!
soft delete란 데이터베이스에서 데이터를 삭제하지 않고, 사용자 입장에서는 데이터에 접근할 수 없게 하는 방식이다.
이를 위해 유저의 엔티티에 activated라는 필드를 추가하고, activated가 1, 즉 true일 때는 사용 가능하도록, 0(false)일 때는 사용 불가능하도록 구현하였다.
soft delete라는 말을 처음 들어봐서 처음에는 이게 뭐지 싶었는데 막상 해보니까 별거 없었다!!
(사실 구현만 쉽고 적용하는 것은 조금 까다로웠을 것이다..)

그리고 오늘 내가.. 필터를 만들었다..!!
전 과제 할 때도 필터를 만들긴 했었는데, 그때는 필터를 급하게 만들어서 예외 처리도 이상하게 했었다.
그런데 오늘 스탠다드반 세션에서 필터 예외 처리하는 방법을 보기도 해서 예외 처리는 잘 할 수 있었다!!
그런데 문제는,, 이전과는 다르게 로그인이 필요없는 API가 많아졌고, 같은 URL을 사용하는데 다른 HTTP 메서드를 사용하는 것들도 생겼다..
혼자 작업할 때는 URL을 바꿔버리면 그만이었지만, 지금은 그렇게 해결할 수 없기 때문에...

private static final Map<String, String> whitelist = new HashMap<>();
static {
   whitelist.put("/users/login", "POST");
   whitelist.put("/users", "POST");
}

이렇게 Map을 사용해 URL과 HTTP 메서드를 모두 저장해두었다.
그리고, 게시판의 GET 중에 {boardId}처럼 쿼리 파라미터가 들어가는 메서드들이 있었는데,
이건 정말 도저히 어떻게 해결해야 할지 모르겠어서...

if(requestURI.contains("/boards") && request.getMethod().equals("GET")) {
	if(requestURI.contains("/myboard") || requestURI.contains("/followers")) {
		HttpSession session = request.getSession(false);
		if (session == null || session.getAttribute("loginUser") == null) {
			response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
			log.error(requestURI + " : 비로그인 접근 시도");
			return;
		}
	}
}

이렇게 게시판의 GET을 골라와 if문에 if문에 if문을 만들어서 처리했다.
이렇게 하는게 맞는 건지는 잘 모르겠지만,, 어쨌든 걸려야 하는 부분들은 필터에 잘 걸리니 그냥 만족하고 넘기기로 했다.

그리고!! soft delete된 유저들을 팔로우 카운트와 목록 조회 API에서 제외하기 위해 쿼리를 열심히 만들었지만..
결국 그냥 유저가 삭제되면 팔로우는 완전히 삭제시켜버리기로 결정되었다..
그래서 그냥 좋은 경험이었다 생각하고 넘기기로 했다,,

이제 내일부터는 도전과제를 시작할텐데, 우리 조는 댓글 기능, 좋아요 기능, 정렬 기능, 검색 기능을 추가하기로 했다.
나는 이 중에서 정렬 기능을 맡았다!!(가장 간단함ㅎㅎㅎ 오예)

내일 빠르게 완성하고 필터를 조금 더 찾아봐야겠다..

우리 팀이 진행한 내용들은 깃허브를 통해 업로드해두었다.
GitHub 보러가기


🙃 오늘의 느낀점

윽 정말 깃허브가 너무 너무 너무 어렵다...
이제는 기능을 구현하는 것 자체는 어렵지 않게 할 수 있겠는데, 어떻게 구현하는 것이 좋은 방법인지 생각하는게 너무 어렵다...
계속 하다보면 언젠간.. 사고가 잘 돌아가리라 믿는다..

profile
백엔드 개발자 지망생

0개의 댓글