0

我正在使用 node.js 的 express 模块来模拟以下形式的 url:

http://localhost:3002/example.domain.to.mock/features/location?lat=100.1234&lon=99.9876

但是在使用正则表达式时我似乎无法逃脱问号字符

var express = require('express');
var app = module.exports = express.createServer();

app.get('/example.domain.to.mock/features/location\?lat=*', function(req, res) {
    sendMockResponseFromFile("mock_location.txt", res);
});

上面的代码不适用于带有问号的网址。我可以模拟带有 & 号的请求,而不是问号。我也试过'\\?和 '?' 没有运气。

4

2 回答 2

3

Express 的路由器仅对 URL 的路径部分进行操作,而不是对整个 URL 进行操作,因此路由无法匹配查询字符串的内容。您的解决方法是合理的。

于 2012-07-23T03:40:38.530 回答
0

我为我的目的找到了一种解决方法:我只是接受所有请求,然后执行一个简单的正则表达式测试以发送我需要的适当模拟文件:

app.get('/example.domain.to.mock/features/location', function(req, res) {
  var originalURL = req.originalUrl;
  var regexPatternForFilteredSearch = new RegExp(".*myRequiredRegex.*");

  if (regexPatternForFilteredSearch.test(originalURL)) {
      sendMockResponseFromFile("mock_location.txt", res);
  } else {
      sendMockResponseFromFile("second_mock_location.txt", res);
  }
});

我仍然很好奇为什么我无法在 app.get() 命令中使用正则表达式

于 2012-07-23T00:57:46.507 回答