SQL 관리
프로젝트에서 sql등을 따로 정리해 놓고 싶다면
다음과 같이 data.sql 파일을 하나 만들어서 사용하면 된다.
picsum
더미 이미지를 제공하는 사이트.
https://picsum.photos/
https://picsum.photos/id/1/200/300
이와같이 간단한 URL로 이미지를 가져올 수 있다.
쿼리 스트링과 일반 요청이 같은 url을 사용할 때
router.get('/', allBooks)
router.get('/:id', bookDetail)
router.get('/', booksByCategory)
books 라우터를 보면 한가지 문제점이 있다. allBooks와 booksByCategory가 같은 URL을 사용하고 있는 것이다. 카테코리별 도서 조회는 대신 쿼리 스트링을 사용하지만 라우터 입장에서는 이를 알 방법이 없다. 이때 라우터는 가장 위쪽에 있는 핸들러로 요청을 처리한다. 따라서 쿼리스트링이 있든 없든 이 경우 전체 도서조회만 실행하게된다.
router.get('/:id', bookDetail)
router.get('/', booksByCategory)
router.get('/', allBooks)
그렇다면 이번에는 카테코리별 도서 조회를 상단으로 올리면 어떻게 될까? 이렇게 해도 문제는 해결되지 않는다. 이번에는 반대로 카테고리별 도서 조회 핸들러만 동작하는 것이다.
해결책은 다음과 같다. 한 핸들러에서 두 가지 연산을 모두 처리해 주면 되는 것이다.
router.get('/', books)
라우터에서는 두 api를 통합할 이름으로 함수를 변경해주고,
const books = (req, res) => {
let {category_id} = req.query;
if(category_id)
booksByCategory(req, res);
else
allBooks(req, res);
}
컨트롤러에서는 쿼리 스트링의 여부에 따라 다른 컨트롤러를 호출하도록 변경하면 정상작동하는 것을 확인할 수 있다.
후기
도서 도메인과 카테고리를 구현하였다. piksum 이라는 무료 이미지 api 사이트도 알게되었다.
키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프
'프로그래머스 풀스택 데브코스 > 데브코스 TIL' 카테고리의 다른 글
웹 풀사이클 데브코스 TIL 35일차 (0) | 2024.01.07 |
---|---|
웹 풀사이클 데브코스 TIL 34일차 (0) | 2024.01.04 |
웹 풀사이클 데브코스 TIL 32일차 (0) | 2024.01.02 |
웹 풀사이클 데브코스 TIL 31일차 (0) | 2023.12.29 |
웹 풀사이클 데브코스 TIL 30일차 (0) | 2023.12.29 |