2018年12月23日 星期日

【Express】利用use()中介守門員來驗證嘗試登陸的使用者 / 處理錯誤路徑 / 處理錯誤程式碼


▌use()在幹嘛?

  • 用來當守門員,比如說要進入\user之前,要先經過use的函式驗證

▌use()可以放在get()前面當驗證

  • 當app被use時,通過next()才會進到下一個階段
var express = require('express');
var app = express();

app.use(function (req, res, next) {
    console.log("有人嘗試登陸了");
    next();    //先執行
})

app.get('/user', function (req, res) {
    res.send("WELCOME")
});

▌不用use寫守門員

  • app.get(‘路由’,守門員,function(req,res){…})
var check = function (req, res, next) {
    console.log("有人嘗試登陸了");
    next();
}
app.get('/user/:name', check, function (req, res) {
    res.send("WELCOME")
});

▌如何設定「404錯誤」?

在最後一行貼上res.status(404).send(“找不到路徑!”),當找不到路徑時就會進入到404
app.use(function (req, res, next) {      //1.先執行這一行
    console.log("有人嘗試登陸了");
    next();       //2.通過next()才會進去下面
})

app.get('/user', function (req, res) {    //3.進入user路由
    res.send("WELCOME")
});

app.use(function (req, res, next) {
    res.status(404).send("找不到路徑!")
})

▌如何設定「程式error」?

在最後一行貼上app.use(function (err, req, res, next) { res.status(500).send(“程式錯誤”)})
app.use(function (req, res, next) {
    console.log("有人嘗試登陸了");
    next();
})

app.get('/user/:name', function (req, res) {
    wow() //錯誤的程式碼
    res.send("WELCOME")

});

app.use(function (req, res, next) {
    res.status(404).send("找不到路徑:(")
})

app.use(function (err, req, res, next) {
    res.status(500).send("程式錯誤")
})

沒有留言:

張貼留言

【JavaScript】用物件Mapping的方法

If的寫法 我們希望當變數是a時就回傳1,變數是b就回傳2,變數是c就會回傳3,一般寫法就是用if,但是這樣會很冗 ​ // IF style var word if(word == 'a'){ word = 1 } else if...