Response.writeHead и response.end в NodeJs
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);
- Может ли кто-нибудь объяснить мне, почему мы называем
writeHead
и end
метод в методе createServer.
- Какова основная цель объекта options, переданного в createServer
Метод.
Ответы
Ответ 1
Те вызовы writeHead
и end
не выполняются в методе createServer
, а скорее в обратном вызове.
Немного легче увидеть, разделите ли вы обратный вызов на отдельную функцию:
function handleRequest(req, res) {
res.writeHead(200);
res.end("hello world\n");
}
https.createServer(options, handleRequest).listen(8000);
Итак, здесь мы определяем функцию handleRequest
, а затем передаем ее в вызов createServer
. Теперь, когда созданный нами node.js-сервер получает входящий запрос, он будет вызывать наш метод handleRequest
.
Этот шаблон очень распространен в JavaScript и является основой для асинхронной обработки событий node.js '.
Ответ 2
В вашем коде writeHead()
вызывается для записи заголовка ответа, что приложение будет обслуживать клиента. Метод end()
отправляет контент ответа клиенту и сигнализирует серверу, что ответ (заголовок и содержимое) был отправлен полностью. Если вы все равно собираетесь отправить что-либо еще, вы должны вызвать метод write()
объекта ответа res
.
Объект options
JSON - это модификатор, который вы можете использовать, чтобы переопределить поведение по умолчанию метода createServer()
. В вашем случае кода:
+: закрытый ключ для использования SSL (по умолчанию - null)
+ cert: общедоступный сертификат x509 для использования (по умолчанию - null)
Вы можете найти в этом разделе документа Node.js API о методе response.writeHead()
.
Вы можете найти в этом разделе документа Node.js API о методе https.createServer()
.
Ответ 3
response.writeHead(200)
отправляет заголовок ответа в запрос. Код состояния представляет собой трехзначный код состояния HTTP, например 404.
Этот метод нужно вызывать только один раз в сообщении, и он должен быть вызван до вызова response.end().
Если вы вызываете response.write() или response.end(), прежде чем вызывать это, будут вычислены неявные/изменяемые заголовки и вызовите эту функцию для вас.
Ответ 4
Насколько я знаю, если вы не поместите response.end() в конец, тогда ваша веб-страница будет загружаться, поэтому response.end() используется, чтобы сообщить серверу, что данные были загружены