-
REST API 서버 만들기 (3) - Router 와 ControllerServer 2020. 3. 31. 00:49
<참고>
REST API 서버 제작 수업을 듣고 포스팅을 하는 게시글 입니다.
서버 개발자가 아니고, 노드를 전문적으로 사용하는 개발자가 아니기에 오류가 있을 수 있습니다.
윈도우로 진행하시는 분들은 콘솔 명령어 수행 시 GitBash 사용을 권장드립니다.
이번 강의에서 작업 할 내용
- Nodemon 설치 및 적용하기
-
Controller 만들기
- Router 만들기
Nodemon 설치 및 적용하기
앞서 서버파일을 제작하면서 한가지 불편한 점을 느꼈을지도 모르겠지만.
이번 강의를 통해서 서버 파일 수정이 일어나고 이를 확인하기 위해서는 서버종료 -> 서버시작 을 반복하여야 합니다.
이러한 점은 개발에 불편함을 주고 개발자의 귀차니즘을 발생 시킵니다.
이를 보완하고자 나온것이 바로 Nodemon 입니다.
Nodemon은 해당 프로젝트의 파일을 트래킹하며 변경사항이나 어떠한 파일에서 저장이 일어났을 경우, 서버를 다시 시작 해줍니다.
`npm install -g nodemon` 명령어를 입력해서 설치를 해주도록 합시다.
package.json 파일을 수정해보도록 하겠습니다.
node ./bin/www 을 위와 같이 수정을 해주시면 됩니다.
사실상 맥에서 작업 하시는 분들은 --legact-watch 옵션을 주지 않아도 정상적으로 작동하지만,
윈도우에서 작업하시거나 추후 도커에서 돌리실 분들은 해당 옵션을 추가해주시면 됩니다.
이제 서버를 키고 서버파일 아무거나 하나를 저장을 해보도록 합시다.
서버를 키고 localhost:3000 에 접속하여 데이터를 한번 불러온 뒤 서버 파일을 한번 저장 해주었습니다.
서버를 키자마자 모든 폴더를 트래킹 하고 변경사항이 있으면 서버를 다시 시작 해줍니다.
이로써 서버파일이 수정되었을 때 서버를 끄고 키는 귀찮은 짓은 하지 않아도 됩니다 : )
Router 만들기
저번 강의에서 간단하게 서버를 띄어보았고 앞으로 유저를 관리하는 API를 하나 제작해보려고 합니다.
우선 간단하게 유저 목록을 출력하는 API를 하나 만들어 보도록 하겠습니다.
다음과 같이 폴더와 파일을 구성해주도록 합시다.
먼저 기존의 routes 폴더의 index.js 를 다음과 같이 수정해줍니다.
클라이언트가 요청을 날리면 '/' 인지 '/v1' 인지 확인을 합니다. 만약 v1일 경우 routes/v1 폴더의 index.js를 실행하게 됩니다.
참고로 노드에서 require를 특정 .js 파일이 아닌 폴더를 잡을 경우 index.js를 실행하게 됩니다.
v1 폴더를 생성하고 index.js를 다음과 같이 작성해줍니다.
클라이언트가 요청을 날리면 '/' 인지 '/users' 인지 확인을 합니다. 만약 users일 경우 routes/v1 폴더의 user.route.js를 실행하게 됩니다.
마지막 최종 라우터 입니다. 여기서 GET, PUT, DELETE, UPDATE controller 클래스와 연결을 해주면 됩니다.
Controller 만들기
바로 이어서 DB는 아니지만 정적 데이터를 한번 출력시켜 보도록 하겠습니다. 다음과 같이 폴더와 파일을 구성해주도록 합시다.
controllers 폴더 안에 v1 폴더를 만들고 그 안에 user.controller.js 파일을 생성해주도록 합시다.
v1 폴더를 만든 이유는 API 버전 관리를 위해서 입니다.
req 는 reqeust 정보를 가지고 있습니다.
res 는 response 반환 할 정보를 가지고 있고 json() 함수를 통해 반환 할 값을 설정 해줍니다.
next 는 미들웨어 이기에 다음으로 넘어가야 할 경우 넘겨주는 역할을 합니다. 추후 에러 핸들링을 추가하기에 next로 넘겨줍니다.
이제 router와 연결해준 후 테스트를 해주도록 합니다.
controller 를 생성해 위에서 작성한 user.controller를 넣어주도록 합시다.
그 후 뒤에 아무런 path 가 없을 경우 데이터를 출력하도록 합시다.
짜잔 이렇게 데이터를 볼 수 있게 되었습니다.
앞서 작업한것은 아래의 그림과 같습니다
코드를 짜면서 위와 같이,
라우터는 어떠한 컨트롤러를 사용해야 하는지에 대한 배분역할
컨트롤러는 실제 데이터와 직면하는 역할
위와 같이 나누게 되면 좀 더 깔끔한 코드를 작성 할 수 있습니다.
다음 강의에서는 DB를 이용하여 데이터를 가져오는 방법을 해보도록 하겠습니다.
'Server' 카테고리의 다른 글
REST API 서버 만들기 (5) - Sequelize Model, Migration (0) 2020.04.01 REST API 서버 만들기 (4) - Dotenv, Sequelize 설치 및 세팅하기 (3) 2020.04.01 REST API 서버 만들기 (2) - Express 설치 (0) 2020.03.30 REST API 서버 만들기 (1) - Setting (0) 2020.03.29 REST API 간단한 테스트 서버 만들기 - JSONPlaceholder (1) 2019.07.18