지금까지는 한개의 .js 파일에서 express 서버와 api생성 두 기능을 실행하였지만.
각 api파일을 생성하고 모듈화 하여 서버파일에 라우터로 연결하여 작동하는 방법에 대해 학습하였습니다.
// express
const express = require('express');
//const app = express()
const router = express.Router() // app ---> router 로 교체
//app.use(express()
router.use(express.json()) // 미들웨어 'json'
const app = express()를 const router = express.Router()로 변경하였습니다.//app.post ▼
router.post('/login', (req, res) => { })
API 작성이 완료되었다면 외부에서도 해당 파일을 사용/실행하기 위하여, 하단에 모듈로 exports 해줍니다.
module.exports = router
라우트 변수를 외부로 내보냅니다. (= 라우터 객체를 외부에서 사용할 수 있게 됩니다.)
위와 같이 모듈로 내보내진 router들은 서버기능을 담당하는 파일내부에 불러와서 연결 후 사용합니다.
1. const express = require('express')
2. const app = express()
3.
4. app.listen(7777)
5.
6. const userRouter = require('./users') // ./ 현재 경로에서 라는 의미, 빼먹으면 모듈 not found 오류
7. const channelRouter = require('./channels')
8. app.use("/", userRouter) // 미들웨어
9. app.use("/channels", channelRouter) // 미들웨어
users모듈을 가져옵니다. // userRouter에 저장channels모듈을 가져옵니다. //channelRouter에 저장"/" 요청은 userRouter(경로 ./users에 있는 파일)를 참조하여 처리합니다."/channels" 요청은 channelRouter(경로 ./channels에 있는 파일)를 참조하여 처리합니다.서버 실행시 한개의 파일에서 모든 기능을 처리할 때와 동일하게 동작합니다.
==========gpt
express()로 Express를 호출하면 애플리케이션 객체가 생성됩니다. // 생성된 객체 = express 웹 서버
app.express = express() // 앱 전체를 관리하는 객체
app.use() // 애플리케이션 전체에서 실행(적용)되는 미들웨어
router.use() // 특정 라우터(API) 에서만 실행되는 미들웨어
==========
참고
node p.582 라우터