Node.js REST API 코드 리펙토링
출처: http://webframeworks.kr/tutorials/nodejs/api-server-by-nodejs-03/#
*Router
app.js 파일을 보면 거의 100줄이 되었다. 처음에 비해 코드가 많이 길어졌음. 이번에는 코드 리펙토링 하는 것을 해보려고한다.
express는 크게 네부분으로 나눌 수 있다.
- Application
- Request
- Response
- Router
처음 세 가지는 모두 설명했고 코드로 구현해 봤음.
- express의 Router
express 객체는 기본적으로 get(), post() 따위의 라우팅 설정 함수가 있음. 하지만 우리가 작성했던 방식으로 코드를 작성하게 되면 코드는 한 파일 안에서 길어지게 되고 결국 가독성이 떨어지게 될 것임.
express는 Router 클래스를 제공하는데 이를 이용하면 라우팅 코드를 모듈화 할 수 있다.그렇다 노드의 모듈을 얘기하는 것임. 결국 라우팅 로직을 모듈화하면 이를 require()함수로 불러서 사용할 수 있는 장점이 있음.
const express = require(‘express’);
const router = express.Router();
router.get(‘/users’. (req, res) => {
// …
});
//delete, post ….
module.exports = router;
express 모듈의 Router 클래스로 객체를 만들어 router상수에 할당한다. 그리고 router객체에서 제공하는 get(), delete(), post() 따위의 함수로 라우팅 로직을 구현한다.
이것은 우리가 express 객체 app을 이용한 것과 매우 똑같다. 마지막으로 module.exports 를 이용해 노드 모듈로 만들었음.
- User 라우팅 모듈 만들기
api/users/index.js에 라우팅 모듈을 만들어 볼것이다. app.js에 있는 라우팅 코드 부분을 이쪽으로 옮긴다. 그리고 app 상수를 모두 router상수로 변경한다.
- User 라우팅 모듈 사용하기
app.js 에는 user 라우팅 코드가 없어졌음. 모두 api/users/index.js 파일로 모듈화 되어 이동되었기 때문이다.
이제는 이 모듈을 app.js에서 불러와 사용해야 한다. 여기서 중요한 점은
express Router 클래스로 만든 User 모듈은 express의 미들웨어가 된 것이다. 그렇기 때문에 express 객체 app 은 use() 함수로 이 미들웨어를 사용할 수 있게 되었음.
app.use(‘/users’, require(‘./api/users’));
다른 미들웨어를 추가하는 것과 다른 점은 파라미터가 두개라는 것이다. use()에서 파라미터를 두 개사용하는 경우는 라우팅 모듈을 설정할때임.
위 코드의 의미는 “모든 리퀘스트중 경로가 ‘/users’로 시작되는 요청에 대해서는 두번째 파라미터로 오는 미들웨어가 담당하도록 한다”임.
그렇기 때문에 api/users/index.js 의 코드의 /users 로 시작되는 파라미터를 수정해줘야함.
-> router.get(‘/:id’, (req, res) => { /* … */ }); 처럼 수정
- 라우팅 컨트롤러 만들기
api/users/user.controller.js 파일 생성
index(), show(), create(), destory() 라는 네 개 함수를 만들어 모듈로 만들었다. 이제 외부에서 모듈을 require() 함수로 불러서 사용할 수 있음.
이 4개의 함수는 4개의 api와 연관된 것이다.
-index() : GET /users
-show() : GET /users/:id
-delete() : DELETE /users/:id
-create() : POST /users
각 함수와 연결된 api의 로직. 그러니깐 get(), delete() 따위의 라우팅 함수 두번째 파라미터를 각각의 함수로 이동한다. 그리고 이컨트롤러 모듈을 api/users/index.js 파일에 불러와 사용한다.
코드는 https://github.com/kiryun/NodeJS_REST-API_tutorial 에 올려놨다.
지금까지 작성한 파일을 정리해보면 다음과 같다.
-app.js : express로 서버 설정 및 구동
-api/users/index.js: User API에 대한 라우팅 설정
-api/users/user.controller.js: User API에 대한 실제 로직
'개발 tip > 백엔드 개발 환경 구축(with AWS)' 카테고리의 다른 글
[Tutorial] Node.js REST API-DB sync (0) | 2019.02.07 |
---|---|
[Tutorial] Node.js REST API -TDD (0) | 2019.02.05 |
[백엔드 개발환경 설정] VScode - AWS개발환경 세팅 (0) | 2019.01.28 |
[Tutorial] Node.js REST API-만들기 (0) | 2019.01.28 |
[백엔드 개발환경 설정] AWS에서 node.js 설치 (0) | 2019.01.28 |