ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • express 에러 처리 하기
    자료 정리 2020. 6. 28. 14:34

    간단하게 express 로 서버 예제를 만들어 보았습니다.


    post로 요청 오는 데이터 id 값을 타입에 따라
    type이 number일 경우에는 상태로 201 과 id값을 내보내고
    string일 경우에는 상태가 400이고 error message를 내보냅니다.
    그 외의 타입일 경우에는 서버에러로 간주하여 500 상태와 error message를 내보내는 코드입니다.

     

     

    1. 각 라우터에서 error를 처리하는 방법

    const app = require("express")();
    const logger = require("morgan");
    const bodyParser = require("body-parser");
    
    app.use(bodyParser())
    app.use(logger("dev"))
    
    app.post("/user", (req, res, next) => {
      const { id } = req.body;
      let err = "";
      console.log(typeof id)
      if(typeof id === "number"){
        console.log("??")
        return res.status(201).json(
            { id }
          )
      }else if( typeof id === "string"){
       return res.status(400).json({ status : 400, message : "type error"})
      }
     return res.status(500).json({ status : 500, message : "server error"})
    })
    
    app.listen(3000, () => {
      console.log("3000 포트 서버 작동 중")
    })




    2. error를 처리하는 미들웨어를 만드는 방법

    const app = require("express")();
    const logger = require("morgan");
    const bodyParser = require("body-parser");
    
    app.use(bodyParser())
    app.use(logger("dev"))
    
    app.post("/user", (req, res, next) => {
      const { id } = req.body;
      let err = "";
      console.log(typeof id)
      if(typeof id === "number"){
        console.log("??")
        return res.status(201).json(
            { id }
          )
      }else if( typeof id === "string"){
        console.log("??")
        err = new Error("type err");
        err.status = 400;
        next(err);
      }
      err = new Error("server error");
      return next(err);
    })
    
    app.use((req, res, next) => {
      const error = new Error("Not Found");
      error.status = 404;
      next(error);
    })
    
    app.use((err, req, res, next) => {
      console.log("ERR : ", err);
      res.status(err.status || 500);
      res.json({
        err : {
          status : err.status,
          message : err.message
        }
      })
    })
    
    app.listen(3000, () => {
      console.log("3000 포트 서버 작동 중")
    })

     

    '자료 정리' 카테고리의 다른 글

    React-Native 와 React의 차이  (0) 2020.05.12
    Cookie와 Storage 이란?  (0) 2020.05.11
    CSS 기초 부터  (0) 2020.04.07
    axios 와 fetch의 다른 점  (0) 2020.02.29
    Sequelize 1 : N 관계 설정, Cascade 적용  (0) 2020.02.26

    댓글

Designed by Tistory.