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에 대한 실제 로직



+ Recent posts