【问题标题】:createServer method in Node.jsNode.js 中的 createServer 方法
【发布时间】:2015-12-12 19:39:43
【问题描述】:

我一直在查看这个基本示例,以便在 Node 中设置一个简单的服务器,但是我真的很难理解“请求”和“响应”参数的来源。它们指向哪里以及如何指向?

// Load the http module to create an http server.
var http = require('http');

function onRequest(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World\n");
}

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(onRequest);

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);

通常在将参数传递给函数时,我会传递一些我能看到的东西,比如等于 5 的变量或“Hello”,但在这种情况下我不是......

抱歉,如果没有很好地解释这一点!

【问题讨论】:

  • 它们来自 Node,它们指向 Node 内部创建的请求和响应对象。
  • 既然你不是,你可以假设有什么东西在调用它们,在这种情况下,你需要 http 模块。
  • 如果你对弄清楚 Node 如何从传入的 http 调用中创建这些参数非常感兴趣,你可以阅读the source
  • 所以当我使用 createServer 方法创建服务器时,它会接受回调函数并将这些对象(响应、请求)设置为在向服务器发出请求时创建的数据?

标签: javascript node.js server


【解决方案1】:

当您调用createServer 时,您将函数onRequest 传递给它:

var server = http.createServer(onRequest);

这种模式被称为回调:你将一个函数传递给其他人,期望他们会在发生有趣的事情时调用你的函数。

本质上,你是在对 Node 说,

嘿,请为我创建一个 HTTP 服务器。每当您收到请求时,调用我的函数onRequest,并将请求和响应对象作为参数传递。

另一种方法是监听request event,它在其回调中采用相同的参数。

参数记录为http.IncomingMessagehttp.ServerResponse。您可以随意调用它们,但requestresponse 是惯用的参数名称。 (有些人使用reqres,因为它们更短。)

【讨论】:

  • 谢谢!感谢您的帮助!
【解决方案2】:

创建服务器并发送响应:

1).创建服务器

    var http = require('http');
    var server = http.createServer ( function(request,response){
        response.writeHead(200,{"Content-Type":"text\plain"});
        response.end("Hello");
    });

    server.listen(8000);
    console.log("Server running on port 8000");

2).保存以上代码,在cmd中运行。

3).打开浏览器并转到http://localhost:8000/

现在你看到了“你好”

【讨论】:

    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 2021-08-06
    • 2017-06-06
    • 2015-11-18
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多