HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
/
🚀
API 명세
/
후기 다건 조회

후기 다건 조회

사용되는 페이지
특정 전시회 후기 더보기
커뮤니티
HTTP Method
GET
설명
후기 다건 조회
인증 필요 여부
완료 여부
완료
URL
/api/v1/reviews?exhibitionId=page=&size=&sort=
담당자
인증 여부에 따른 응답 변경 여부
isLiked(review)
must or should
must
도메인
REVIEW

수정

무한스크롤

질문

  • page, slice 중 어떤 걸로 반환하는게 좋을까요?? - page로 변환 후, 커스텀 dto 사용하는 것으로 결정되었습니다
    • 프론트는 두 페이지에서 모두 무한스크롤 쓰기로 했습니다.

Query Parameter (필수 아님)

Key
Value (기본값)
exhibitionId
기본값 없음. 특정 전시회의 후기를 조회하는 경우 전시회 id
page
0 (페이지 번호)
size
10(한 페이지 안에 들어가는 컨텐츠 개수)
sort
createdAt,desc

Sort

정렬 기준
설명
createdAt
생성 시간순
reviewLikeCount
리뷰 좋아요 개수 순
commentCount
댓글 개수 순
정렬 순서
설명
desc
내림차순
asc
오름차순
  • 사용법: sort=commentCount,asc 쿼리 파라미터에 예시처럼 값을 넣음

Response Body

{ "message": "후기 다건 조회 성공", "status" : 200, "data" : { "content" : [ { "reviewId": 43, "user" : { "userId" : 11, "profileImage" : "https~", "nickname" : "Emily" }, "exhibition" : { "exhibitionId" : 24, "name" : "전시회 이름", "thumbnail" : "https~~" }, "date" : "2022-05-12", "title" : "", "content" : "오늘 핸드아트코리아 전시회를 다녀왔다. 정말 재밌었다~~", "createdAt" : "2022-03-22T22:33:11", "updatedAt" : "2022-03-23T13:03:51", "isEdited" : true "isLiked" : false, "isPublic" : true, "likeCount" : 32, "commentCount" : 2, "photos" : [ "https~", "https~" ] }, { "reviewId": 41, "user" : { "userId" : 11, "profileImage" : "https~", "nickname" : "Emily" }, "exhibition" : { "exhibitionId" : 24, "name" : "전시회 이름", "thumbnail" : "https~~" }, "date" : "2022-05-12", "title" : "핸드아트코리아 전시회 다녀옴~", "content" : "오늘 핸드아트코리아 전시회를 다녀왔다. 정말 재밌었다~~", "createdAt" : "2022-03-22T22:33:11", "updatedAt" : "2022-03-23T13:03:51", "isEdited" : true "isLiked" : false, "likeCount" : 32, "commentCount" : 2, "photos" : [ { "photoId" : 35, "path" : "https~" }, { "photoId" : 36, "path" : "https~" }, ... ] }, ... ], numberOfElements: 2, //content의 요소가 몇개인지 offset: 0, // 현재 페이지에서 시작하는 요소의 index 번호 pageNumber: 0, //페이지 넘버 pageSize: 20, //페이지 사이즈 totalElements: 2, // 전체 요소 수 totalPages: 1 //전체 페이지 수 } }
  • reviewId : review id
  • user : { userId, profileImage, nickname }
  • exhibition : { exhibitionId, name, thumbnail }
  • title : 후기 제목
  • content : 후기 내용
  • createdAt : 후기 생성 시간
  • updatedAt : 후기 수정 시간
  • isEdited : 후기 수정 여부
  • isLiked : 사용자가 좋아요 등록한 후기인지 여부
  • isPublic : 해당 후기의 공개여부 (포맷을 맞추기 위해 추가)
  • likeCount : 후기 좋아요 개수
  • commentCount : 후기 댓글 개수
  • photos : photo url 리스트
 
후기 단건 조회와 달리 후기의 date 정보가 빠져있어서 일단 추가해서 구현 혹시 필요없는 데이터라면 삭제 가능

인증 여부에 따른 응답값

ㅤ
인증 O
인증 X
isLiked(review)
true/false
false
  • isPublic=true인 값만 반환