Я початківець у, Express.js
і мене бентежать ці два ключові слова: res.end()
і res.send()
.
Вони однакові чи різні?
Я початківець у, Express.js
і мене бентежать ці два ключові слова: res.end()
і res.send()
.
Вони однакові чи різні?
Відповіді:
res.send()
відправить відповідь HTTP. Його синтаксис:
res.send([body])
Параметр body може бути об'єктом Buffer, String, об'єктом або масивом. Наприклад:
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 (), ви можете відповідати лише текстом, і він не встановить " Тип вмісту "
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
використовується експрес framwork