[으라챠피디아] 서버 구현하기
오늘은 으랏챠피디아의 공식적인 개발 첫날이었다.
2주간의 짧은 프로젝트여서 최대한 욕심을 내지 않으려고했지만,
실력이 쟁쟁하신 분들과 하다보니 욕심이 생기지 않을수가 없었다.
(이분들의 지식을 나눠갖고 싶었다.🤩)
오늘의 할일로는
- 레이아웃 완성하기(BEM/SPA적용)
- api 문서 만들기
- the movie api 적용하기
- server 구현하기
- 캐러셀 적용하기
가 있었다.
내가 하고 싶었던 것은 “the movie api 적용하기” 였지만,
시간이 촉박한 상황에서 서버 개발에 가장 능슥했던 내가 server를 맡게 되었다.
(프론트도 해보고 싶다..!😭)
오늘은 하루 종일 서버 구현만 작업했기 때문에 서버 작업에서 헷갈렸던 내용을 짚고 넘어가보자🧐
1. Query string과 Path Variable의 차이
api를 설계하는 과정에서 GET의 payload data를 어떤 방법으로 받아야 할 지가 의문이었다.
Query string
GET /api/reviews?movieId=4&userEmail=test3
- key-value 형태로 작성, 여러 개를 보내기 위해 & 사용
- 특정 값으로 필터링
- 정렬이나 필터링을 할 때 사용
Path Variable
GET /api/reviews/:id
- 경로를 변수처럼 사용
- 특정 인덱스에 대한 조회
- 특정 resource를 식별할 때 사용
- id에 해당하는 정보가 없으면 404 에러
나의 회고🧐
router.get('/:movieId/:userEmail', reviewCtrl.getReviewByMovieIdUserEmail);
해당 코드와 같이 movieId와 userEmail로 리뷰를 필터링하고자 할 때,
기존에는 path parameter로 하였지만, 이 경우는 두 개의 데이터로 필터링을 하는 과정이기 때문에 queryString이 더 적합하다.
queryString과 pathParameter의 차이가 기존에는 GET/POST 방식의 차이라고 생각했는데,
받아온 데이터를 어떻게 활용할 것인가(바로 인덱스로 사용, 그 값을 통해 필터링)에 따라 선택해야한다는 것을 깨달았다.
위의 코드를 다시 바꿔본다면
router.get('/?movieId=3&userEmail=test3',reviewCtrl.getReviewByMovieIdUserEmail)
이 되겠다.
또한 이 둘의 경우가 GET 방식에서만 사용한다고 생각했는데, GET에만 한정된 것이 아닌, PUT, DELETE 등에서도 사용이 가능하다는 것을 알았다.
앞으로는 queryString과 pathParameter의 차이를 알고, 더 RESTful한 api를 만들기 위해 노력하자👍