특정 키워드에 대한 totalPages가 20일 경우, 사용자가 21 page에 대한 요청을 보내면 NotFoundException(404)를 던져줍니다.
작업사항
page > totalPages 일 경우, NotFoundException(404) 전달
citations 내림차순 순으로 데이터 전달
title 이 항상 있는 데이터만 전달
axios timeout 20,000ms 으로 설정
timeout시 RequestTimeoutException(408) 전달
crossref etiquette 설정 (MAIL_TO 환경변수 추가 필요)
추가
searchController test 코드 수정
PASS src/search/tests/search.controller.spec.ts (7.605 s)
SearchController
/search/auto-complete
✓ getAutoCompletePapers - keyword=coffee 일 때 PaperInfo[]를 return (777 ms)
✓ keyword 미포함시 error - GET /search/auto-complete?keyword= (18 ms)
/search
✓ getPapers - keyword='coffee' 일 때 PaperInfoExtended[]를 return (12 ms)
✓ keyword 미포함시 error - GET /search?keyword= (7 ms)
✓ rows<=0 이거나, rows 값이 integer가 아닐 경우 error - GET /search?keyword=coffee&rows=<rows> (7 ms)
✓ page<=0 이거나, page 값이 integer가 아닐 경우 error - GET /search?keyword=coffee&page=<page> (6 ms)
✓ page>max 이면 error - GET /search?keyword=coffee&page=<page> (5 ms)
/search/paper
✓ getPaper - doi=10.1234/some_doi 일 때 PaperInfoDetail을 return (4 ms)
✓ doi가 입력되지 않을 경우 error - GET /search/paper?doi= (6 ms)
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로 선언하겠습니다.
개요
특정 키워드에 대한
totalPages
가 20일 경우, 사용자가 21page
에 대한 요청을 보내면 NotFoundException(404)를 던져줍니다.작업사항
citations
내림차순 순으로 데이터 전달title
이 항상 있는 데이터만 전달MAIL_TO
환경변수 추가 필요)추가
Test Suites: 1 passed, 1 total Tests: 9 passed, 9 total Snapshots: 0 total Time: 7.823 s, estimated 8 s
interface에 맞는 class를 생성해서 item의 key, value가 해당 class에 선언될 수 있는지 여부를 확인하는 방식인데, class implements에는 generic을 사용할 수가 없어서,, 그 때 그 때 함수를 선언해주어야하네요. 이 방식이 아니면, PaperInfo, PaperInfoExtended, PaperInfoDetail interface들을 이전처럼 class로 돌려서 generic 함수를 만드는 방법을 사용할 수는 있을 것 같습니다. 어떤 방식으로 개선할 수 있을까요? -> 이 부분은 swagger api를 붙이기 위한 편의성을 위해 class로 선언하겠습니다.