Skip to content

search alcohols

whale0928 edited this page Jun 13, 2024 · 1 revision

요약(Summary)

이 문서는 위스키 목록을 조회하는 API에 대한 기술적인 명세를 기술합니다.


목표(Goals)

  • 술을 조회하는 API를 제공합니다.
  • 토큰에 따른 찜하기 여부를 제공합니다.
  • 검색어, 카테고리, 리전, 솔팅을 통해 술을 조회합니다.

계획(Plan)

인기 알코올 목록 API 설계

  • #54 이슈를 기반으로 진행됩니다.

  • API endpoint : GET /api/v1/alcohols/search

  • request

    • 검색어(keyword)
    • 카테고리(category)
    • 리전 아이디(regionId)
    • 정렬 타입(sortType)
      • 인기순 :: POPULAR
      • 별점순 :: RATING
      • 찜순 :: PICK
      • 댓글순 :: REVIEW
      • 기본값 :: POPULAR
    • 정렬 방향(sortOrder)
      • 내림차순 :: DESC
      • 오름차순 :: ASC
      • 기본값 DESC
    • cursor
      • 페이징을 위한 커서
      • 시작 값
      • 기본 0
    • pageSize
      • 한번에 조회할 데이터 수
      • 기본값 10
  • response

    • 조회된 목록 갯수
    • 목록 상세
      • 술 아이디.
      • 술 한글이름
      • 술 영어이름
      • 한글 카테고리명
      • 영어 카테고리명
      • 썸네일 이미지.
      • 평균 별점
      • 별점 참여자 수
      • 리뷰 참여자 수
      • 찜 카운트
      • 내가 찜했는지 여부
    • 메타정보
      • 검색시 사용된 검색어
      • 조회 커서 정보
  • QueryDsl 계층 전달 전 별도의 dsl 객체로 만들어 전달한다.

  • 검색어 필터링을 구현한다.

  • 커서 기반을 구현 (객체,서비스)


Exception

예외 발생 시 다음과 같은 에러 내용을 반환합니다.

  • 카테고리가 이상한 경우

  • 리전이 이상한 경우

  • 정렬 구분자 타입이 잘못된 경우

  • 토큰이 이상한 경우

  • 검색어가 이상한 경우


체크 해야하는 이슈 사항

  • 비지니스 로직
    • 동적 쿼리가 필요함
    • 솔팅 타입에 따른 각각 다른 비지니스 로직이 필요함.
    • 토큰에 따른 찜하기 여부를 확인해야함.
    • 검색어 조건을 like 검색으로 해야함.
    • 카테고리, 리전, 솔팅에 따른 필터링이 필요함.
    • 인기도 계산식이 필요함.
      • 가중치 계산식이 필요함.
  • 테스트 코드
    • controller
      • mock mvc 테스트
      • rest docs 문서화 테스트
    • service
    • repository
      • querydsl 테스트

Clone this wiki locally