Должен res.end() вызываться в выражении с помощью node.js?
У меня есть несколько Express приложений, и я вижу, что в некоторых модулях res.end()
вызывается в конце обработчика запросов (после res.send
или res.json
), в то время как в другие, это не называется.
Например:
app.get('/test', function(req, res) {
res.send('Test', 200);
});
или
app.get('/test', function(req, res) {
res.send('Test', 200);
res.end();
});
Оба случая работают, но я боюсь протекать или заканчивать файловые дескрипторы или что-то в этом роде, когда я запускаю много запросов. Какой из них "более правильный"?
Ответы
Ответ 1
Ответ на ваш вопрос - нет. Вам не нужно вызывать res.end()
, если вы вызываете res.send()
. res.send()
вызывает res.end()
для вас.
Взято из /lib/response.js, вот конец функции res.send()
:
//. . .
// respond
this.end(head ? null : body);
return this;
}
Ответ 2
res.end([data] [, encoding])
Завершает процесс ответа. Этот метод фактически исходит от Node core, в частности response.end() method of http.ServerResponse.
Используйте для быстрого завершения ответа без каких-либо данных.
Если вам нужно ответить данными, вместо этого используйте такие методы, как res.send() and res.json().
Ответ 3
один пример, где вы должны вызвать функцию end(), - это когда вы отправляете буфер в качестве загружаемого файла.
res.write(buffer);
res.end();