[태호] 조회수 기능 구현 고민 - boostcampwm2023/web04-ALGOCEAN GitHub Wiki
고려 사항
- 하나의 유저가 하나의 게시글을 볼 때마다 조회수를 증가시켜야하는지
- 볼 때 마다 증가시킴
- 하루에 한번만 증가시킴
- 유저당 한번만 증가시킴
구현 방식
- GET을 통해 증가시키는 방법 → 멱등성이 깨짐
- PUT을 통해 증가시키는 방법 → API호출을 최소 2회 해야함(GET → PUT)
볼 때 마다 증가시킴
- 게시글에 대한 요청을 받을 때 마다 DB의 값을 증가시키기
하루에 한번만 증가시킴
- 쿠키와 세션정보를 활용
- 유저의 쿠키와 세션정보를 통해 조회수를 증가시킬지 말지 결정하는 로직 필요
유저당 한번만 증가시킴
- 조회수를 다루는 table이나 user의 column에 해당 글을 읽었는지 여부 추가
- 이를 통해 조회수를 증가시킬지 말지 결정할 수 있음
잘못 생각했던 점
- IP를 통해 조회수의 증가 여부를 결정하려고 했지만 대학교와 같은 곳은 여러명이 하나의 IP를 사용함
- GET은 사용하면 안됨 왜냐하면 멱등성이 깨짐
- 프로젝트 스펙을 고려하여 로직을 작성할 생각을 못했음
- 쇼핑몰과 같은 사이트는 조회수가 중요하기 때문에 여러가지를 모두 고려하여 조회수 관련 로직을 작성해야 함
- 우리 프로젝트에서는 조회수가 중요하지 않기 때문에 naive하게 구현해도 괜찮음
- 다만 naive하게 구현한 이후 refactoring을 통한 spec-up 과정이 필요할 수도 있음
- 하나의 사용자가 여러 device를 사용하는 경우를 고려하지 못함
구현 결과
- GET 요청을 받을 때 마다 조회수를 증가시키는 방법을 선택함
- 해당 게시글을 조회 하고 조회수를 증가시키는 것을 하나의 transaction으로 묶음
