簡體   English   中英

Express JS中的路徑參數

[英]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.

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