-
[Node.js] Node.js에서 빠르고 쉽게 API서버 만들기 - 4개발/Javascript 2019. 3. 3. 03:32
지난 포스팅에서는, 라우터에 POST 방식의 API를 만들어보고, 테스트를 해보았습니다 :)
Node.js에서 빠르고 쉽게 API서버 만들기 - 3
현재 프로젝트의 구조는, 라우터 폴더 내의
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())
을 추가하면 정상적으로 작동되는 것을 확인하실 수 있습니다 :)
'개발 > Javascript' 카테고리의 다른 글
[Node.js] Node.js에서 빠르고 쉽게 API서버 만들기 - 3 (3) 2019.03.02 [Node.js] Node.js에서 빠르고 쉽게 API서버 만들기 - 2 (0) 2019.03.02 [Node.js] Node.js에서 빠르고 쉽게 API서버 만들기 - 1 (0) 2019.03.02 [Node.js] node.js 크롤링 방지 우회하기(네이버 크롤링) (0) 2018.11.19 [Node.js] node.js환경에서 웹 크롤링 하기(cheerio-httpcli) (1) 2018.11.19