2025-02-21학습 요약

airbus·2025년 2월 21일

프로그래머스

목록 보기
22/93

지금까지는 한개의 .js 파일에서 express 서버와 api생성 두 기능을 실행하였지만.
각 api파일을 생성하고 모듈화 하여 서버파일에 라우터로 연결하여 작동하는 방법에 대해 학습하였습니다.

router 생성/분리

  • users.js, channels.js에 각각 회원관리 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()로 변경하였습니다.
    └ Router()는 라우터 함수를 사용하여 router 객체를 생성 (p.584)

API 생성과 모듈화

//app.post ▼ 
router.post('/login', (req, res) => { })
  • app 객체를 대신하여 router 객체를 사용하기 위해 변경하였습니다.

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) // 미들웨어
  • express 모듈을 가져옵니다.
  • express객체로(express기능을 담은) app 객체를 생성합니다. // app객체 ≒ 서버객체
  • 포트 7777 사용
  • users모듈을 가져옵니다. // userRouter에 저장
  • channels모듈을 가져옵니다. //channelRouter에 저장
  • path 에 해당하는 "/" 요청은 userRouter(경로 ./users에 있는 파일)를 참조하여 처리합니다.
  • path 에 해당하는 "/channels" 요청은 channelRouter(경로 ./channels에 있는 파일)를 참조하여 처리합니다.

서버 실행시 한개의 파일에서 모든 기능을 처리할 때와 동일하게 동작합니다.

  • 가독성 증가, 유지관리 편함.

==========gpt
express()로 Express를 호출하면 애플리케이션 객체가 생성됩니다. // 생성된 객체 = express 웹 서버
app.express = express() // 앱 전체를 관리하는 객체

app.use() // 애플리케이션 전체에서 실행(적용)되는 미들웨어
router.use() // 특정 라우터(API) 에서만 실행되는 미들웨어

==========

참고
node p.582 라우터

0개의 댓글