Django-Wanted-Internship-3-Team / repo1_feed-service

소셜 미디어 통합 Feed 서비스 (원티드 팀 과제 1)
https://bow-hair-db3.notion.site/Feed-938175f1165b470e90462d1f1d52fd78
MIT License
2 stars 0 forks source link

feature: 게시물 목록(API) #9

Closed saJaeHyukc closed 10 months ago

saJaeHyukc commented 11 months ago

Feed에 나타나는 게시물 목록 API

image
simseulnyang commented 11 months ago

게시물 목록 구현을 위해 요구 사항을 분석 하였는데 올바르게 분석이 되었는지 확인이 필요합니다.

※ 게시물 목록에 보여지는 필수 필드 ( content_id, type, title, content(최대 20자), hashtags, view_count, like_count, share_count, updated_at, created_at)

  1. 처음 게시물 목록 조회 화면에 보여지는 모든 피드들은 유저 계정의 해시태그(예시. ”#dani”)로 초기 필터링 되어 구성된다.
  2. Django rest framework library의 filtering 기능을 설치하여 type별 피드를 조회할 수 있다.
  3. created_at, updated_at, like_count, share_count, view_count 필드를 ordering_field로 설정하고 오름차순, 내림차순이 가능하도록 구현한다.
  4. SearchFilter를 통해 게시물을 검색하는데 search_field를 정하거나, FilterSet을 상속 받은 클래스를 따로 구현하여 title, content, title + content 검색이 가능하도록 기능 구현
  5. pagination 기능을 통해 하나의 페이지 당 보여지는 게시물의 수를 설정한다.

※ 게시물 목록 API에선 content 는 최대 20자 까지만 포함됩니다. => 이 부분은 게시물 작성 당시에는 20자 이상 작성할 수 있으나 목록에서만 20자 까지만 보여지도록 구현하는 부분인지 확인이 필요합니다.

saJaeHyukc commented 11 months ago

페이지네이션은 어떤 페이지네이션을 사용하실 예정이신가요??

제가 알고 있는 페이지네이션같은 경우 리미트 옾셋, 커서, 일반 이렇게 지원하는 것으로 알고있습니다!

https://www.django-rest-framework.org/api-guide/pagination/

simseulnyang commented 11 months ago

페이지네이션 기능은 제공해주신 공식 문서를 기본 참고 문서로 두고 다른 기술 블로그도 참고하면서 어떤 기능이 좋은지 파악 후 다시 남기도록 하겠습니다!

saJaeHyukc commented 11 months ago

페이지네이션 기능은 제공해주신 공식 문서를 기본 참고 문서로 두고 다른 기술 블로그도 참고하면서 어떤 기능이 좋은지 파악 후 다시 남기도록 하겠습니다!

넵 좋습니다! 나중에 결정하시면 회의 때 알려주시면 감사하겠습니다!

simseulnyang commented 11 months ago

페이지네이션 기능은 제공해주신 공식 문서를 기본 참고 문서로 두고 다른 기술 블로그도 참고하면서 어떤 기능이 좋은지 파악 후 다시 남기도록 하겠습니다!

넵 좋습니다! 나중에 결정하시면 회의 때 알려주시면 감사하겠습니다!

두 가지 Pagination 기능을 두고 어떤 것을 활용할까 고민했는데 LimitOffsetPagination 기능을 사용해보려고 선택했습니다.

일단 두 기능 모두 쿼리 파라미터 값을 받고, REST_FRAMEWORK = { “PAGE_SIZE” : 10 } 과 같이 전역 설정을 통해 노출되는 페이지 내의 목록 수를 설정할 수 있지만

LimitOffsetPagination 의 경우는 PAGE_SIZE 지정이 없을 때,

- offset: 몇 번째 레코드 부터 출력할지 설정. 기본값 0
- limit: 몇 개의 레코드를 보여줄 지 설정.

이게 가능한 것 같더라고요. 요구 사항을 좀 더 추가해서 다양한 기능을 생각할 수 있을 때, 활용도가 높을 것 같아 선택하게 되었습니다.

request 요청 시 아래와 같이 값을 줘야 하기 때문에 limit와 offset을 설정해줘야 한다는 단점이 있긴 합니다.

// request
GET https://api.example.org/accounts/?limit=100&offset=400