Я новичок, Express.js
и меня смущают эти два ключевых слова: res.end()
и res.send()
.
Они одинаковые или разные?
Я новичок, Express.js
и меня смущают эти два ключевых слова: res.end()
и res.send()
.
Они одинаковые или разные?
Ответы:
res.send()
отправит ответ HTTP. Его синтаксис:
res.send([body])
Параметр body может быть объектом Buffer, строкой, объектом или массивом. Например:
res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });
Смотрите это для получения дополнительной информации.
res.end()
завершит процесс ответа. Этот метод на самом деле происходит от ядра Node, а именно от response.end()
метода http.ServerResponse
. Он используется для быстрого завершения ответа без каких-либо данных. Например:
res.end();
res.status(404).end();
Прочитайте это для получения дополнительной информации.
express
но из заглавной мысли - кто-то что-то посылает, что-то заканчивает ... это правда.
res.send()
ничего? Это как res.end()
?
Я хотел бы сделать несколько больший акцент на некоторых ключевых различиях между res.end()
& в res.send()
отношении заголовков ответов и их важности.
1. res.send () проверит структуру вашего вывода и соответственно установит информацию заголовка.
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
Где с помощью res.end () вы можете отвечать только текстом, и он не будет устанавливать « Content-Type »
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
2. res.send () установит атрибут «ETag» в заголовке ответа
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
¿Почему этот тег важен?
Заголовок ответа ETag HTTP является идентификатором для конкретной версии ресурса. Это позволяет кэшам быть более эффективными и экономит пропускную способность, поскольку веб-серверу не нужно отправлять полный ответ, если содержимое не изменилось.
res.end()
НЕ будет устанавливать этот атрибут заголовка
Что делает res.send (), так это реализует res.write , res.setHeaders и res.end .
он проверяет, какие данные вы отправляете, и устанавливает правильные заголовки,
затем его поток данных с помощью res.write, и в конце он использует res.end, чтобы установить конец запроса.
Есть некоторые случаи, когда вы захотите сделать это вручную, например, если вы хотите потоковый файл или большой набор данных, в этом случае вы захотите установить заголовки самостоятельно и использовать res.write, чтобы сохранить поток течь.
res.end
используется простой узел, гдеres.send
используется экспресс-фреймворк