我是JS的新手,更具体地说是Node。即使在阅读了api文档之后,我仍然对于什么是'requestListener'而感到困惑。采用以下方法。
http.createServer([requestListener]);
搜索谷歌透露,' requestListener'是一个(n)(匿名)函数,具有以下签名:
function (request, response) { };
我想我没有错误地阅读文档,希望有人可以指出我正确的方向。
答案 0 :(得分:3)
方法调用采用的docs say函数将在您的应用程序收到新请求时调用。正如您在问题中正确说明的那样,此函数有两个参数 - request
和response
个对象。
您应该检查这些对象的内容,以了解可用的信息。另外,请查看request和response的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
,并向其传递两个对象,类型为request
和response的类型。因此,您可以像这样编写requestListener
:
function requestListener(req, res) {
res.write("Hello world");
res.end();
}
,它将把字符串Hello world
推送到访问此简单Web服务器的每个 URL。
write是response
对象的众多方法之一。
您可以在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是驱动许多现实网络服务器的出色工具。