node.js | Express 설치, 서버 구축, 라우팅

gemma. K·2021년 2월 19일
0

node.js

목록 보기
2/2

Express?

express란 node.js의 웹 프레임워크이다. node.js 자체를 프레임워크로 생각하지만 사실 대중적으로 express를 주로 사용한다. node.js 자체 만으로 서버 구축이 가능하지만 express의 여러 메서드를 활용하여 좀 더 간결하고 편리하게 서버 구축이 가능하다. express는 라우팅 기능과 미들웨어 사용에 있어 최적화 되어 있다.

npm 프로젝트 초기화

프로젝트 디렉토리 생성

$ mkdir my-project

디렉토리 이동

$ cd my-project

npm 프로젝트 초기화: node & npm 설치 필수!

  • -y 플래그는 모두 동의 처리
  • package.json 파일 생성
$ npm init -y

express 설치

  • --save : 프로젝트 단위 설치
  • dependencies에 저장됨
$ npm install express --save

서버 구축

app.js

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

서버 실행

$ node app.js

Routing

  • 라우팅이란 네트워크 통신의 최적의 경로를 선택하는 과정이다.
  • 개발자의 라우팅은 여러 네트워크 경로를 구축하는 동시에 유지 보수에 있어 편리함을 갖추는 것이 필요하다.

router()

  • 같은 경로이지만 http method가 다른 경우 router()를 사용하여 간결한 코드로 라우팅이 가능하다.
const express = require("express")
const app = express()

app.route('/books')
  .get((req, res) => {
    res.send('Get a random book')
  })
  .post((req, res) => {
    res.send('Add a book')
  })
  .put((req, res) => {
    res.send('Update the book')
  })

Router()

  • 어플리케이션의 복잡성이 더 할수록 경로가 복잡해지고, 반복적으로 사용하는 부분이 늘어난다.
  • 같은 성격을 가진 앱 별로 분리하여 라우터 파일을 관리하여 복잡성을 최소화한다.

app.js

  • userRouter와 bookRouter 모듈을 가져와 앱의 공통 경로와 라우터를 미들웨어로 설정한다.
const express = require("express")
const app = express()
const userRouter = require("./userRouter")
const bookRouter = require("./bookRouter")

app.use("/users", userRouter)
app.use("/books", bookRouter)

userRouter.js

  • Router() 메서드를 활용하여 라우터를 모듈화하고 http 메서드, 경로, 콜백함수를 작성한다.
  • 두 라우터는 users/signup, users/signin의 경로에 응답한다.
const express = require("express")
const router = express.Router()

router.post("/signup", (req, res) => {
  console.log("SignUp Success")
})

router.post("/signin", (req, res) => {
  console.log("SignIn Success")
})

module.exports = router

bookRouter.js

  • Router() 메서드를 활용하여 라우터를 모듈화하고 http 메서드, 경로, 콜백함수를 작성한다.
  • 두 라우터는 books, books/:id의 경로에 응답한다.
const express = require("express")
const router = express.Router()

router.get("", (req, res) => {
  console.log("Get all books")
})

router.get("/:id", (req, res) => {
  const id = req.params.id
  console.log(`Get id: ${id} book.`)
})

module.exports = router

0개의 댓글