溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

node.js express中app.param的用法詳解

發(fā)布時(shí)間:2020-10-07 14:45:27 來源:腳本之家 閱讀:186 作者:Zuckjet 欄目:web開發(fā)

前言

大家應(yīng)該都知道,express中app.param方法用于驗(yàn)證參數(shù),我個(gè)人把它理解成類似對參數(shù)過濾的一個(gè)中間件。在這里我來結(jié)合幾個(gè)demo,加深大家對app.param方法的理解。下面話不多說,來一起通過示例代碼看看詳細(xì)的介紹吧。

demo1:

var express = require('express');
var app = express();
app.param(function(param, option) {
 return function (req, res, next, val) {
 if (val == option) {
  next(); //
 }
 else {
  res.sendStatus(404);
 }
 }
});
app.param('id', 1337);
app.get('/user/:id', function (req, res) {
 res.send('參數(shù)通過檢驗(yàn)');
});

app.listen(3000, function () {
 console.log('Ready');
});

在上述例子中,只有在地址欄輸入http://localhost:3000/user/1337的情況下,頁面才會顯示“參數(shù)通過檢驗(yàn)”。

也就是說app.params()可以對地址欄參數(shù)進(jìn)行過濾,針對不同參數(shù)作出不同響應(yīng)。

但是上述代碼,在運(yùn)行的時(shí)候會有這樣的提示:

express deprecated router.param(fn):Refactor to use path params

demo1中示例的寫法并不推薦,改成如下寫法,提示就會消失:

demo2:

var express = require('express');
 var app = express();
 app.param('id', function (req, res, next, id) {
 if(req.params.id==1337){
  next();
 }
 else{
  res.sendStatus(404);
 }
 });
 app.param('id', 1337);
 app.get('/user/:id', function (req, res) {
  res.send('參數(shù)通過檢驗(yàn)');
 });
 
 app.listen(3000, function () {
  console.log('Ready');
 });

tip:通常app.params結(jié)合正則表達(dá)式使用更強(qiáng)大。

總結(jié)

以上就是這篇文章的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI