从localhost

时间:2016-09-17 13:05:09

标签: javascript node.js

我是node.js的新手,我正在使用localhost:XXXX尝试一些简单的示例。

我想从节点读取我的请求对象。我有一本书,在书中他们使用cURL(某些程序)与节点而不是浏览器通信。是否有可能在浏览器地址字段中写入内容并将其发送到localhost并将请求对象发送到节点,如果我在某个服务器的某个URL中输入了一个类似的内容?如果是这样,我该怎么写?如果我使用localhost,是否必须使用cURL或类似的东西?

我对节点和JavaScript非常陌生,所以我不知道我是否使用了正确的词语。我试图搜索,但我不认为我知道要搜索的正确术语。

这是我的服务器代码:

var port = 3000; 
http.createServer(function (req, res) { 
  var url = parse(req.url); 
  res.writeHead(200, { 'Content-Type': 'text/plain' }); 
  res.end('Hello World\n' + url ); 
}).listen(port); 

当我在地址栏中写http://localhost:3000/hello.com时,我希望我会在浏览器中获得Hello world hello.com,但我得到hello world [object object]

请帮忙。

2 个答案:

答案 0 :(得分:0)

您可以通过测试来使用常规浏览器。在您的URL地址中输入您在cURL地址中的URL地址。例如:

localhost:3000/index.html

如果您希望使用更复杂的工具为您提供有关请求/响应的更多信息,可以使用Postman之类的工具

在您的代码中使用:

res.end('Hello World\n' + url.parse(req.url, true));

url是一个对象,您需要指定要在其上调用的属性或方法。

以下是有关如何解析URL的示例。 Easy URL Parsing With Isomorphic JavaScript

答案 1 :(得分:0)

@Vlad Beden给出的上述答案看起来不错,但您可能想要使用以下代码

var http = require("http");

var port = 3000; 
http.createServer(function (req, res) { 
    console.log('Requested method: ', req.method);
    var params = parseUrl(req.url); 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
    var data = 'Hello World'
    for(var i=0; i<params.length; i++)
        data += '\n'+params[i]
    res.end(data); 
}).listen(port); 

var parseUrl = function(url) {
    var params = [];
    if(url && url != '' && url != '/') {
        url = url.replace(/^\/|\/$/g, '');
        params = url.split('/');
    }
    return params;
}

您可以尝试http://localhost:3000/hello.comhttp://localhost:3000/hello.com/google.com/more.com/etc。我想建议您打印请求对象console.log(req),并了解网址,方法,标题等。