express next 함수 / use vs all / error

KHW·2021년 7월 16일
0

Node.js

목록 보기
13/19

기본코드

const express = require('express');
const app = express();

app.get('/',(req,res,next)=>{
  console.log('1');
},
  (req,res,next)=>{
  console.log('1.1');
  });

app.get('/',(req,res,next)=>{
  console.log('2');
})

app.listen(8080);

실행하면 1밖에 콘솔 출력이 안된다.

response나 next를 사용하지 않아 서버가 반응을 하지 않는다.


수정코드1

const express = require('express');
const app = express();

app.get('/',(req,res,next)=>{
  console.log('1');
  next();
},
  (req,res,next)=>{
  console.log('1.1');
  });

app.get('/',(req,res,next)=>{
  console.log('2');
})

app.listen(8080);

next()를 통해 다음 대상인 1.1이 출력된다.


수정코드2

const express = require('express');
const app = express();

app.get('/',(req,res,next)=>{
  console.log('1');
  next('route');
},
  (req,res,next)=>{
  console.log('1.1');
  });

app.get('/',(req,res,next)=>{
  console.log('2');
})

app.listen(8080);

현재 경로에서 다음 미들웨어로 넘어가게 하는
next('route')에 의해 결과가 1.1 결과를 제외한 1,2가 출력된다.


에러다루기

에러에 대해서는 app.use를 통해 다룰 수 있다.

app.use((error,req,res,next)=>{
  console.error(error);
  res.status(500).send('error occurs');
})

app.use vs app.all

app.use는 첫번째 매개변수의 url 및 해당 url의 하위 url부분까지 처리가 진행되나
app.all은 첫번째 매개변수의 url에서만 처리가 진행된다.

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글