我运行下面的程序,对不起我的语法,我的母语不是英语,所以如果我不是描述性的,请原谅我,请提问。 我的输出是 E:\ Love>节点punit.js 服务器正在侦听端口5000 在路径:fof上收到的请求与方法:get和这些查询字符串参数一起使用[对象:空原型] {fizz:'buzz'} 我的代码在下面
/*
* Primary file for API
*
*/
// Dependencies
var http = require('http');
var url = require('url');
// Configure the server to respond to all requests with a string
var server = http.createServer(function(req,res){
// Parse the url
var parsedUrl = url.parse(req.url, true);
// Get the path
var path = parsedUrl.pathname;
var trimmedPath = path.replace(/^\/+|\/+$/g, '');
// Get the query string as an object
var queryStringObject = parsedUrl.query;
// Get the HTTP method
var method = req.method.toLowerCase();
// Send the response
res.end('Hello World!\n');
// Log the request/response
console.log('Request received on path: '+trimmedPath+' with method: '+method+' and this query string: ',queryStringObject);
});
// Start the server
server.listen(3000,function(){
console.log('The server is up and running now');
});
实际输出 E:\ Love>节点punit.js 服务器正在侦听端口5000 在路径:fof上收到的请求带有方法:get和这些查询字符串参数{fizz:'buzz'}
我的代码图片在下面
答案 0 :(得分:1)
简短答案:
如果此处的第二个参数是true
,url.parse(req.url, true)
,您将无法摆脱[Object: null prototype]
(看起来像是内置功能中节点的一部分,可能是提醒)
这是因为您要将parseQueryString
的{{1}}参数设置为url.parse
。从文档中:
如果为true,则查询属性将始终设置为
true
模块的querystring
方法返回的对象。
来自parse()
文档
querystring.parse()方法返回的对象原型上不会从JavaScript对象继承。这意味着未定义典型的Object方法,例如obj.toString(),obj.hasOwnProperty()和其他方法。
因此在querystring.parse
上总是以console.log
开头,例如[Object: null prototype]
我假设它在那里(作为节点功能的一部分),提醒query: [Object: null prototype] { q: 'ok' }
对象的prototype
是query
。
例如,在以下情况中可以观察到相同的行为:
null