Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
JaeHyuckSa opened this issue Oct 25, 2023 · 5 comments · Fixed by #20
Closed

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

JaeHyuckSa opened this issue Oct 25, 2023 · 5 comments · Fixed by #20
Assignees
Labels

Comments

@JaeHyuckSa
Copy link
Contributor

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

  • 아래 **쿼리 파라미터**를 사용 가능합니다.
image
  • 게시물 목록 API에선 content최대 20자 까지만 포함됩니다.
    • 기타 필드 추가하셨을 경우, 목록 구성에 필요하지 않은 필드는 제외 합니다.
@simseulnyang
Copy link
Collaborator

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

※ 게시물 목록에 보여지는 필수 필드 ( 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자 까지만 보여지도록 구현하는 부분인지 확인이 필요합니다.

@JaeHyuckSa
Copy link
Contributor Author

JaeHyuckSa commented Oct 26, 2023

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

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

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

@simseulnyang
Copy link
Collaborator

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

@JaeHyuckSa
Copy link
Contributor Author

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

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

@simseulnyang
Copy link
Collaborator

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

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

  • PageNumberPagination
  • LimitOffsetPagination

두 가지 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

simseulnyang added a commit that referenced this issue Oct 27, 2023
- url을 restful하게 적용할 수 있도록 수정
- postlist 변수명 -> posts로 수정
- q 객체 사용하여 변수 지정
- 불필요한 if문 제거
- 반복적인 if-elif-else문 가독성있도록 수정
- ordering 부분 코드 수정
- test코드 추가 작성
simseulnyang added a commit that referenced this issue Oct 27, 2023
- optional에서 type부분 리스트로 수정
- 관련 없는 코드 삭제
- search_keyword값이 있을 경우, title, content 검색 가능하도록 코드 작성
- 함수 리턴값 설정
JaeHyuckSa added a commit that referenced this issue Oct 27, 2023
- CI 과정 중 posts/views.py에 173번째 줄에 ordering이라는 변수를 사용하지 않아 제거 했습니다
Related to #9
JaeHyuckSa added a commit that referenced this issue Oct 27, 2023
- tests라는 파일과 폴더가 이중으로 존재하여 사용하지 않는 파일을 제거했습니다
Related to #9
JaeHyuckSa added a commit that referenced this issue Oct 27, 2023
- username 필드가 추가가 안돼서 username을 추가해줬습니다.
Related to #9
Chestnut90 added a commit that referenced this issue Oct 31, 2023
- 테스트 케이스에 Print문 존재

Related to #9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants