ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] Node.js에서 빠르고 쉽게 API서버 만들기 - 4
    개발/Javascript 2019. 3. 3. 03:32

    Node.js에서 빠르고 쉽게 API서버 만들기 - 4

    지난 포스팅에서는, 라우터에 POST 방식의 API를 만들어보고, 테스트를 해보았습니다 :)

    Node.js에서 빠르고 쉽게 API서버 만들기 - 3

    https://hanswsw.tistory.com/20


    현재 프로젝트의 구조는, 라우터 폴더 내의 index.js 에서, 모든 API의 정의와 처리를 모두 담당하고 있습니다.

    하지만, 계속 이 구조로 API를 추가하다 보면, 가독성의 측면과 유지보수적인 측면에서 비효율적일 수 있습니다.

    요번 포스팅에서는, 라우터에서는 API의 URL만 정의하도록 하고, 실질적인 요청에 대한 처리는 컨트롤러를 만들어서 처리하도록 구조를 바꿔보도록 하겠습니다 :)


    컨트롤러 생성

    요청에 대한 처리를 하는 컨트롤러를 만들기 위해, 프로젝트 폴더에 controllers 폴더를 만들어주도록 하겠습니다.

    이후에는, controllers 폴더 내에 index.js를 만들어서, 기존에 routers/index.js에 존재하던 API들을 옮겨봅시다!


    컨트롤러 생성 후의 프로젝트 구조

    컨트롤러에 API 정의

    기존 routes/index.js 내에 존재하던 API들을, 하나씩 모듈화를 통해 컨트롤러 내에 정의를 할 수 있습니다!


    기존 routes/index.js


    controllers/index.js


    위 코드처럼 저희는 유저의 요청에 따라 처리하는 코드를 모듈화해서 컨트롤러에 옮긴후 라우터에서 해당 컨트롤러 내의 모듈을 불러오도록 하겠습니다.


    라우터 수정

    기존의 라우터에 정의된 API코드들을 모두 지우고, API들의 경로와 함께, 컨트롤러의 각 모듈들을 지정해줍니다.

    API들을 모두 컨트롤러 내에 옮겼으므로, 라우터에서는 각각의 API의 경로와, 해당 경로에 따른 컨트롤러 내의 함수를 지정해주면 좀 더 구조화된 API서버를 완성할 수 있습니다!

    수정된 routes/index.js



    현재 프로젝트에서는, 모든 API들을 하나의 컨트롤러에 담았지만, 용도나 목적에 따라 여러 컨트롤러에 API들을 나눠서 작성하는 것을 권장합니다!



    완성된 프로젝트의 서버를 실행하고, 이전과 마찬가지로 postman 으로 테스트를 해보면, 정상적으로 작동하는 것을 확인할 수 있습니다!

    구조를 위와같이 변경하게 되면, POST방식의 API가 정상적으로 작동하지 않는 문제가 있습니다.

    Express내에 내장되어있는 body parser가 정상적으로 작동되지 않는 문제인데,

    npm install body-parser 을통해 body-parser을 설치 후,

    app.js에

    var bodyParser = require('body-parser')
    app.use(bodyParser().json())

    을 추가하면 정상적으로 작동되는 것을 확인하실 수 있습니다 :)


    댓글

Designed by Tistory.