express(nodeJS) (1)

이태혁·2020년 6월 11일
0

1. express를 이용한 간단 서버만들기(공식문서)

  1. npm i express로 express 설치
  2. index.js로 파일 생성
  3. 아래와 같이 작성
const express = require('express')
const app = express()
const port = 3000

app.get('/', (request, response) =>{
    response.send("hello")
})
app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})
  1. 터미널에서 node index.js 로 서버 실행
  2. 브라우져를 열어서 localhost:3000 접속

2. routing하는 방법 (쿼리스트링 안쓰고)

  • 예전에 routing할 때는 주소줄뒤에 ?키=값&키=값 형식으로 주소를 받아서 작성했는데
    요즘에는 express에서 다음과 같이 시맨틱 방법으로 주소를 받아들임.
app.get('/page/:pageId', (request, response) =>{
    response.send(request.params)
})

3. app.get, app.use설명

  • app.get(path, callback [, callback ...])
    • path
      • A string representing a path.
      • A path pattern.
      • A regular expression pattern to match paths.
      • An array of combinations of any of the above.
      • Default : '/' (root path)
    • callback
      • A middleware function.
      • A series of middleware functions (separated by commas).
      • An array of middleware functions.
      • A combination of all of the above.
  • app.use([path,] callback [, callback...])

    • path: app.get과 같음
    • callback: app.get과 같음
  • app.get과 app.use의 argument가 같음. 다만 app.use는 path가 옵션임

  • app.get은 라우팅할 때, app.use는 미들웨어를 사용할 때 쓰는게 아닌가 싶음

  • app.use는 미들웨어를 사용할 때 쓰이는데 특정 path에서만 쓰일수도 있지만 path와 상관없이 쓰일수도 있어서 path가 옵션인듯

  • app.get은 라우팅이므로 순서가 상관없는듯? 하지만 app.use는 순서가 중요함

// this middleware will not allow the request to go beyond it
app.use(function (req, res, next) {
  res.send('Hello World')
})

// requests will never reach this route
app.get('/', function (req, res) {
  res.send('Welcome')
})
  • 이때 위에꺼만 실행되고 밑에는 실행이 안됨
  • 그래서 미들웨어를 쓰고나서 마지막이 아닌이상 항상 next()를 해줘야됨
app.use('/abcd', function (req, res, next) {
  next();
});
  • 이런식으로 next를 인자로 받아 next()를 하면 다음 app.use로 넘어가는듯

  • 에러 핸들링을 할 때는 무조건 인자가 4개 여야함.

app.use(function (err, req, res, next) {
  console.error(err.stack)
  res.status(500).send('Something broke!')
})
  • (err, req, res) 이렇게 3개만 쓰면 (req, res, next)로 인식함
profile
back-end, cloud, docker, web의 관심이 있는 예비개발자입니다.

0개의 댓글