传递字符串变量参数node.js不表达
Pass string variable parameter node.js not express
我想知道如何使用node.js从类似于express的请求url中解析字符串参数。我知道这是可能的与快车,但我想知道它如何可以用node.js没有快车。
表达的例子:
var app = require('express')();
app.get('sample/request/url/:id', function(req, res) {
var parameter = req.params.id;
});
如果您正在使用connect
(或只是http
模块),您可以使用RegExp
:
-
With
http
:var http = require('http'); http.createServer(function (req, res) { // Note there's no next here var match = req.url.match(/^sample'/request'/url'/(.+)$/); var id = match ? match[1] : null; }).listen(3000); ...
-
With
connect
:var connect = require('connect'); connect.createServer(funcion(req, res, next) { var match = req.url.match(/^sample'/request'/url'/(.+)$/); var id = match ? match[1] : null; }).listen(3000); ...
这是一个简单的例子。如果你想拥有自己的路由中间件,你应该从RegExps
的数组开始(可以从你添加的String
动态生成),然后循环它们直到找到匹配。
每个路由元素都应该有它的RegExp
和它的参数,这样一旦你找到一个匹配,你就可以提取并将参数附加到req
对象,并选择一个适当的名称。
正如robertklep在他的评论中指出的,你可以检查paramify
。它的代码非常清晰,并且完成了我在答案的最后一部分中所说的一些事情。例如,您可以看到它有一个函数regify
来动态地构造RegExps
,还有一个循环来提取匹配的参数:
var params = []
for (var i = 1; i < matches.length; i++) {
var key = reg.keys[i - 1]
if (key) {
params[key.name] = matches[i]
} else {
params.push(matches[i])
}
}
您可以从req
中获得url
属性并根据需要进行解析:
var server = require('http').createServer(function (req, res) {
console.log(req.url);
// would log "/sample/request/url/123"
});
解析部分可以使用RegEx完成。
相关文章:
- 在索引.html和应用.js [node.js] 之间共享变量
- JS(node.js)而循环不起作用
- 如何使用 JS (Node.js) 防止 HTTP 查询中允许使用 UTF8 字符串
- Angular JS & Node Webkit Routing
- 当作为脚本运行时.js Node中“this”的上下文是什么
- JS/Node:- 使用 node.io 选择标记
- JavaScript 如何让节点在返回 node.js/Node-RED 之前等待
- 处理快速连续的函数调用 - Javascript / underscore.js / node.js
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- JS node-mysql bools 表现得很奇怪
- Node.js+Node Webkit+基于Node串行端口的应用程序-这可能吗
- 如何在Express.js/Node.js中检查查询字符串是否有值
- Express.Js, Node.Js, MongoDB Questions
- 在JS/Node中,当多个人编辑相同的记录时,如何避免数据冲突?有图案吗
- 服务器端js(node.js)上的同步
- 将参数从jade发送到js/node
- angular.js+node.js/electron中的Promise;不起作用
- 是否有可能确定我的应用程序的aws实例使用js/node aws-sdk
- Image Magick模块抛出奇怪的错误(Express js Node js)
- 用JS (Node.js)读取文本文件'