我有一个关于 Node Js 响应的一般性问题,希望有人能解释一下当我说 res.WriteHead("blah blah") 时实际发生了什么。
因此,根据我对 html 和 javascript 的理解,我发出了路线请求。我检查了路线的请求,并假设它是一个 get 方法。我确实写了 head ,它将写入 http 响应的头部。如果我发送 res.write("some text"); 会发生什么。
我要问的是你能解释一下这个过程以及客户端和服务器之间的通信到底发生了什么吗?
我对响应有点困惑,这是一条消息被发回还是像一个流。
对整个过程进行尽可能多的解释的答案将不胜感激。
我正在谈论的一些示例代码。请注意我使用 NodeJS
//加载http模块 var http = require('http');
//创建服务器 var server = http.createServer(handleRequest);
//启动服务器 服务器.listen(2000);
//请求处理函数 函数handleRequest(req, res) {
console.log(req.method+" request for "+req.url);
// content header
res.writeHead(200, {'content-type': 'text/plain'});
res.write("ohai!\n");
// write message body and send
res.end("Hello, World!"); };
最佳答案
为了解释这一点,我们可以考虑一个类比,其中响应可以被视为具有以下内容的文档: 以下实体 - Status-Line ,(response-header) [ message-body ]
所以通过 res.writeHead(200, {'content-type': 'text/plain'});服务器正在写入响应文档的状态行 响应 header 'content-type': 'text/plain'
通过 res.write("ohai!\n");服务器已开始写入消息正文内容 res.end("Hello, World!"); 将被视为完成。在此之前,客户端将处于停滞状态,等待服务器提供请求的响应
从上面的结论来看,服务器端代码可能只有一个 res.writeHead 和 res.end,但可以使用多个 res.write ,这会将 messaged 附加到 message-body 。
在服务器上执行 res.end 后,服务器使用 HTTP 分块传输机制以 block 的形式发送响应,其中每个 block 前面都有其大小。当遇到零长度 block 时传输结束。
我正在附加 request-response life-cycle
app.get('/check', function (req, res) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write("ohai!\n");
res.write("I am!\n");
res.write("good!\n");
res.end("Hello, World!");
})
这导致了以下响应
ohai!
I am!
good!
Hello, World!
关于node.js - Node Js 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43649204/