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() используется, чтобы сообщить серверу, что данные были загружены