В чем разница между res.end() и res.send()?
Я новичок в Express.js
и меня смущают эти два слова: res.end()
и res.send()
.
Они одинаковые или разные?
2 ответа:
res.send()
отправит ответ HTTP. Его синтаксис,res.send([body])
параметр body может быть объектом буфера, строкой, объектом или массивом. Например:
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()
завершит процесс ответа. Этот метод на самом деле исходит из ядра узла, в частностиresponse.end()
методhttp.ServerResponse
. Он используется для быстрого завершения ответа без каких-либо данных. Например:res.end(); res.status(404).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. РЭС.отправить() будет установлен атрибут "значение ETag" в заголовке ответа
app.get('/',(req,res)=>{ res.send('<b>hello</b>'); });
¿почему этот тег важен?
Заголовок ответа HTTP ETag является идентификатором для определенной версии ресурса. Это позволяет кэшам быть более эффективными, и экономит пропускную способность, так как веб-серверу не нужно отправлять полный ответ, если контент не изменился.
res.end()
не будет устанавливать этот атрибут заголовка