簡體   English   中英

Node.js - Express.js URL參數驗證

[英]Node.js - Express.js URL parameters validation

我是node.js / express.js新手。 我如何驗證:id參數? 我想只將數字傳遞給:id參數。 如果:id是一個字符串或包含其中一個,我會顯示一個404錯誤,如zend框架路由http://framework.zend.com/manual/current/en/user-guide/routing-and-controllers。 HTML

/routes/users.js

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/:id?/', function(req, res, next) {
  var id = req.params.id;
  if(id){
    res.render('single-users', { title: 'Single ' + id });
  }else {
    res.render('users', { title: 'All users' });
  }

});

module.exports = router;

我試圖改變

router.get('/:id?/', function(req, res, next)

router.get('/[0-9]+?/', function(req, res, next)

localhost:3000/users/ab/

工作和顯示single-users頁面,我想要它..

LUCAS COSTA推薦的解決方案

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/:id(\\d+)?/', function(req, res) {
  var id = req.params.id;

  if(id){
    res.render('single-users', { title: 'Single ' + id });
  }else {
    res.render('users', { title: 'All users' });
  }

});

module.exports = router;

要么

router.get('/:id([0-9]+)?/', function(req, res)

你可以提供正則表達式:

router.get('/:id(\\d+)/', function (req, res, next){
    // body
});

文件

為什么不在主代碼塊內部進行僅整數檢查,然后有條件地返回404呢?

router.get('/:id', function(req, res, next) {
  var id = req.params.id;
  if(id && string.match(/^[0-9]+$/) != null)}
    res.render('single-users', { title: 'Single ' + id });
  }else if(string.match(/^[0-9]+$/) == null){
    res.status(404).render('your-404-view');
  }else{
    res.render('users', { title: 'All users' });
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM