Sono un principiante Express.jse sono confuso da queste due parole chiave: res.end()e res.send().
Sono uguali o diversi?
Sono un principiante Express.jse sono confuso da queste due parole chiave: res.end()e res.send().
Sono uguali o diversi?
Risposte:
res.send()invierà la risposta HTTP. La sua sintassi è,
res.send([body])
Il parametro body può essere un oggetto Buffer, una stringa, un oggetto o una matrice. Per esempio:
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' });
Vedi questo per maggiori informazioni.
res.end()terminerà il processo di risposta. Questo metodo in realtà proviene dal Node core, in particolare il response.end()metodo di http.ServerResponse. Viene utilizzato per terminare rapidamente la risposta senza dati. Per esempio:
res.end();
res.status(404).end();
Leggi questo per maggiori informazioni.
expressma dal titolo pensato: uno invia qualcosa, uno finisce qualcosa ... è giusto.
res.send()con niente. Questo si comporta res.end()?
Vorrei porre un po 'più di enfasi su alcune differenze chiave tra res.end()e res.send()rispetto alle intestazioni di risposta e perché sono importanti.
1. res.send () verificherà la struttura dell'output e imposterà le informazioni dell'intestazione di conseguenza.
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
Dove con res.end () puoi solo rispondere con il testo e non imposterà " Content-Type "
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
2. res.send () imposterà l'attributo "ETag" nell'intestazione della risposta
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
¿Perché questo tag è importante?
L'intestazione della risposta HTTP ETag è un identificatore per una versione specifica di una risorsa. Consente alle cache di essere più efficienti e consente di risparmiare larghezza di banda, in quanto un server Web non deve inviare una risposta completa se il contenuto non è cambiato.
res.end() NON imposterà questo attributo di intestazione
ciò che fa res.send () è implementare res.write , res.setHeaders e res.end .
controlla quali sono i dati inviati e imposta le intestazioni corrette,
quindi trasmette i dati con res.write e alla fine usa res.end per impostare la fine della richiesta.
ci sono alcuni casi in cui vorrai farlo manualmente, ad esempio se vuoi eseguire lo streaming di file o un set di dati di grandi dimensioni, in questo caso vorrai impostare le intestazioni da solo e utilizzare res.write per mantenere lo stream flusso.
res.endusato da un semplice nodo doveres.sendè usato da espresso framwork