在NodeJs中的response.writeHead和response.end
var https = require('https'); var fs = require('fs'); var options = { key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem') }; https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(8000);
- 任何人都可以解释我为什么要在createServer方法中调用
writeHead
和end
方法。 - 在createServer方法中传递的options对象的主要目的是什么?
那些writeHead
和end
调用不是在createServer
方法中完成的,而是在callback中完成的。
如果您将callback拆分为单独的函数,则会更容易一些:
function handleRequest(req, res) { res.writeHead(200); res.end("hello world\n"); } https.createServer(options, handleRequest).listen(8000);
所以我们在这里定义一个handleRequest
函数,然后把它传递给createServer
调用。 现在每当我们创build的node.js服务器收到一个传入的请求,它就会调用我们的handleRequest
方法。
这种模式在JavaScript中很常见,是node.jsasynchronous事件处理的核心。
在你的代码中, writeHead()
被调用来写入响应的头部,应用程序将服务于客户端。 end()
方法都将响应的内容发送给客户端,并向服务器发送响应(标头和内容)已完全发送的信号。 如果你仍然要发送任何东西,你应该调用res
响应对象的write()
方法。
options
JSON对象是一个修饰符,您可以使用它来覆盖createServer()
方法的默认行为。 在你的代码的情况下:
+密钥:用于SSL的私钥(默认为空)
+证书:使用公共x509证书(默认为空)
您可以在Node.js API文档的关于response.writeHead()
方法的这一节中find更多信息。
您可以在Node.js API文档的关于https.createServer()
方法的这一节中find更多信息。
response.writeHead(200)
发送一个应答头给请求。 状态码是一个3位数的HTTP状态码,如404。
该方法只能在消息中调用一次,并且必须在调用response.end()之前调用该方法。
如果你在调用这个函数之前调用了response.write()或者response.end(),那么隐式的/可变的头文件将被计算出来并且为你调用这个函数。
据我所知,如果你不把response.end()结束,那么你的网页将继续加载,因此response.end()用于告诉服务器数据已经加载