boostcampwm-2022 / web18-PRV

논문 인용관계를 밤하늘의 별 처럼 표시해보자 🌟-🌟
https://paperef.com
143 stars 3 forks source link

10-6 [BE] [검색리스트] pagination 범위 초과시 error 처리 #63

Closed leesungbin closed 1 year ago

leesungbin commented 1 year ago

개요

특정 키워드에 대한 totalPages가 20일 경우, 사용자가 21 page에 대한 요청을 보내면 NotFoundException(404)를 던져줍니다.

작업사항

추가

Test Suites: 1 passed, 1 total Tests: 9 passed, 9 total Snapshots: 0 total Time: 7.823 s, estimated 8 s

- `/search/paper` 의 결과로 오는 `referenceList`의 각 값에 `key` 추가

## 리뷰 요청사항
- `src/search/tests/search.service.mock.ts` 에서 mockup 하는 방식
- `src/search/tests/search.controller.spec.ts` 에서 데이터의 type을 검사하는 방식
  ```javascript
  const c = class T implements PaperInfo {};
  Object.entries(item).forEach(([key, value]) => {
    try {
      c[key] = value;
    } catch (err) {
      throw err;
    }
  });

interface에 맞는 class를 생성해서 item의 key, value가 해당 class에 선언될 수 있는지 여부를 확인하는 방식인데, class implements에는 generic을 사용할 수가 없어서,, 그 때 그 때 함수를 선언해주어야하네요. 이 방식이 아니면, PaperInfo, PaperInfoExtended, PaperInfoDetail interface들을 이전처럼 class로 돌려서 generic 함수를 만드는 방법을 사용할 수는 있을 것 같습니다. 어떤 방식으로 개선할 수 있을까요? -> 이 부분은 swagger api를 붙이기 위한 편의성을 위해 class로 선언하겠습니다.

leesungbin commented 1 year ago

44