[英]Route parameters in Express JS
我正在使用Express JS處理路由http://localhost:3000/location
,該路由允許混合使用參數和固定端點。 例如:
http://localhost:3000/location
是該路由的根,它呈現位置列表的視圖。
http://localhost:3000/location/map
呈現一個視圖,用於在網絡地圖上繪制位置列表。
http://localhost:3000/location/:id
包含URL中給定位置ID的參數,調用該參數時,將呈現一個視圖,以查看來自數據庫查詢的給定位置的詳細信息。
'use strict';
var path = require('path');
var express = require('express');
var router = express.Router();
/* GET route root page. */
router.get('/', function(req, res, next) {
// DO SOMETHING
});
/* GET the map page */
router.get('/map', function(req, res, next) {
// DO SOMETHING
});
/* GET individual location. */
router.get('/:id', function(req, res, next) {
// DO SOMETHING
});
module.exports = router;
這是處理帶有混合固定值和參數化參數的路線的最佳實踐嗎?
更具體地說,如何正確處理當我調用“ http:// localhost:3000 / location / SOMETHINGWRONG ”時出現的問題,例如,觸發了http://localhost:3000/location/:id
導致數據庫查詢錯誤,因為“ SOMETHINGWRONG”不是整數並且無法通過?
您可以在路由中使用正則表達式來限制規則,例如,如果僅希望接收整數,則可以使用以下內容:
router.get('/:id(\\d{12})', (req, res) => {
//...
});
如果符合規則,請輸入方法,其中“ id”是一個數字,包含12個字符
僅驗證數字:
app.get('/:id(\\d+)', function (req, res){
...
});
若要更好地控制可以由route參數匹配的確切字符串,可以在括號(())中附加一個正則表達式。 例如:您的ID是一個整數,最大長度為10個字符
/* GET individual location. */
router.get('/:id([0-9]{1,10})', function(req, res, next) {
// DO SOMETHING
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.