NodeJS http模块:什么是requestListener?

时间:2015-01-02 22:44:46

标签: javascript node.js

我是JS的新手,更具体地说是Node。即使在阅读了api文档之后,我仍然对于什么是'requestListener'而感到困惑。采用以下方法。

http.createServer([requestListener]);

搜索谷歌透露,' requestListener'是一个(n)(匿名)函数,具有以下签名:

function (request, response) { };

我想我没有错误地阅读文档,希望有人可以指出我正确的方向。

3 个答案:

答案 0 :(得分:3)

方法调用采用的docs say函数将在您的应用程序收到新请求时调用。正如您在问题中正确说明的那样,此函数有两个参数 - requestresponse个对象。

您应该检查这些对象的内容,以了解可用的信息。另外,请查看requestresponse的API文档。

该功能是可选的;您还可以通过以下方式附加请求处理程序:

var server = http.createServer()

server.on('request', function (req, res) {
  // Process the request here
})

实际上,当有人在浏览器中打开您的网站时(即发出GET http请求),就会调用此函数。该功能的目的是向客户端提供HTTP响应主体,即根据需要呈现网页或执行任何业务逻辑。

答案 1 :(得分:0)

直接回答你的问题:这是一个在服务器收到请求时被调用并被赋予这两个参数的函数。

至少你可以尝试在函数内部执行console.log(request, response),看看终端中有什么东西吐出来。

但这只是兔子洞的开始。您应该阅读“回调函数”,因为它们是Node(以及相当多的客户端javascript)如何操作(异步)的组成部分。

答案 2 :(得分:0)

http.createServer方法创建一个server对象。

server对象具有一个listen方法。如果您调用listen方法,例如:

createServer(requestListener).listen({ port:80 });

server对象将在端口80上侦听,并且在该端口上收到Http请求时,server对象将调用函数requestListener,并向其传递两个对象,类型为requestresponse的类型。因此,您可以像这样编写requestListener

function requestListener(req, res) {
   res.write("Hello world");
   res.end();
}

,它将把字符串Hello world推送到访问此简单Web服务器的每个 URL。

writeresponse对象的众多方法之一。

您可以在PC上运行上述几行代码,并将浏览器指向http://localhost

如果其他应用程序正在侦听端口80,请在listen方法中使用其他端口号。

requestListener使用匿名函数仅仅是一个不同的编码模式,不管是好是坏。我上面的代码可以重写为:

createServer((req, res) => {
   res.write("Hello world");
   res.end();
}).listen({ port:80 });

上面的代码非常基本,并且将对到达它的每个Http请求发送相同的响应。该代码不会区分localhost / page1还是localhost / page2等。因此,要做更多的事情,requestListener必须进行显着扩展以解析url中的不同路径并决定要为每个URL发送什么内容。 。但是要在不编写太多代码的情况下做为真正的Web服务器有用的任何事情,您将需要一个软件包。 Express是驱动许多现实网络服务器的出色工具。