res.end()zakończy proces odpowiedzi. Ta metoda w rzeczywistości pochodzi z rdzenia Node, a konkretnie z response.end()metody http.ServerResponse. Służy do szybkiego zakończenia odpowiedzi bez żadnych danych. Na przykład:
Ale res.end może faktycznie działać jak res.send, w tym sensie, że możesz przekazać argument w postaci łańcucha, który zostanie dodany jako treść odpowiedzi. Ponadto res.send również kończy odpowiedź. Czym więc różnią się funkcjonalnie?
saltthehash
31
@ psytech140 Jmar77 miał ładny odpowiedź tutaj : „Jeśli przekazać ciąg res.send (), to automatycznie zakłada Content-Type HTML res.end (), jednak po prostu wywołuje bazowy koniec węzła () realizacja sprawie. strumień odpowiedzi, więc nie są przyjmowane żadne założenia dotyczące typu zawartości. "
abagh0703
Musiałem to głosować wyłącznie dlatego, że nigdy nie użyłem, expressale z tytułu myśli - ktoś coś wysyła, coś kończy ... To było dobrze.
Darren Bartrup-Cook
Ale co, jeśli po prostu używasz res.send()niczego. Czy to działa res.end()?
Chciałbym położyć większy nacisk na kilka kluczowych różnic między nagłówkami odpowiedzi res.end()i res.send()w odniesieniu do nich oraz dlaczego są one ważne.
1. res.send () sprawdzi strukturę twojego wyjścia i odpowiednio ustawi informacje w nagłówku.
¿Dlaczego ten tag jest ważny?
Nagłówek odpowiedzi HTTP ETag jest identyfikatorem określonej wersji zasobu. Pozwala na bardziej wydajne buforowanie i oszczędza przepustowość, ponieważ serwer WWW nie musi wysyłać pełnej odpowiedzi, jeśli zawartość nie uległa zmianie.
Moim zdaniem taka odpowiedź powinna zostać zaakceptowana ... więcej amfazy opiera się na faktycznych różnicach, które mogą zrujnować dzień pracy, zamiast dyskusji na temat zakończenia odpowiedzi z treścią / bez ...
Tomas
13
co robi res.send (), to zaimplementowanie res.write , res.setHeaders i res.end .
sprawdza jakie dane wysyłasz i ustawia prawidłowe nagłówki,
następnie przesyła strumieniowo dane za pomocą res.write, a na końcu używa res.end do ustawienia końca żądania.
są przypadki, w których będziesz chciał to zrobić ręcznie, na przykład jeśli chcesz przesłać plik strumieniowy lub duży zestaw danych, w takich przypadkach będziesz chciał ustawić nagłówki samodzielnie i użyć res.write, aby zachować strumień pływ.
resjest obiektem HttpResponse, który dziedziczy z OutgoingMessage. res.sendwywołania, res.endktóre są realizowane przez OutgoingMessage w celu wysłania odpowiedzi HTTP i zamknięcia połączenia. Widzimy tutaj kod
res.end
używany przez zwykły węzeł, gdzieres.send
jest używany przez ekspresowe framworkOdpowiedzi:
res.send()
wyśle odpowiedź HTTP. Jego składnia to:Parametr body może być obiektem Buffer, String, obiektem lub Array. Na przykład:
Zobacz to, aby uzyskać więcej informacji.
res.end()
zakończy proces odpowiedzi. Ta metoda w rzeczywistości pochodzi z rdzenia Node, a konkretnie zresponse.end()
metodyhttp.ServerResponse
. Służy do szybkiego zakończenia odpowiedzi bez żadnych danych. Na przykład:Przeczytaj to, aby uzyskać więcej informacji.
źródło
express
ale z tytułu myśli - ktoś coś wysyła, coś kończy ... To było dobrze.res.send()
niczego. Czy to działares.end()
?Chciałbym położyć większy nacisk na kilka kluczowych różnic między nagłówkami odpowiedzi
res.end()
ires.send()
w odniesieniu do nich oraz dlaczego są one ważne.1. res.send () sprawdzi strukturę twojego wyjścia i odpowiednio ustawi informacje w nagłówku.
Gdzie za pomocą res.end () możesz odpowiedzieć tylko tekstem i nie ustawi to " Content-Type "
2. res.send () ustawi atrybut „ETag” w nagłówku odpowiedzi
¿Dlaczego ten tag jest ważny?
Nagłówek odpowiedzi HTTP ETag jest identyfikatorem określonej wersji zasobu. Pozwala na bardziej wydajne buforowanie i oszczędza przepustowość, ponieważ serwer WWW nie musi wysyłać pełnej odpowiedzi, jeśli zawartość nie uległa zmianie.
res.end()
NIE ustawi tego atrybutu nagłówkaźródło
co robi res.send (), to zaimplementowanie res.write , res.setHeaders i res.end .
sprawdza jakie dane wysyłasz i ustawia prawidłowe nagłówki,
następnie przesyła strumieniowo dane za pomocą res.write, a na końcu używa res.end do ustawienia końca żądania.
są przypadki, w których będziesz chciał to zrobić ręcznie, na przykład jeśli chcesz przesłać plik strumieniowy lub duży zestaw danych, w takich przypadkach będziesz chciał ustawić nagłówki samodzielnie i użyć res.write, aby zachować strumień pływ.
źródło
res
jest obiektem HttpResponse, który dziedziczy z OutgoingMessage.res.send
wywołania,res.end
które są realizowane przez OutgoingMessage w celu wysłania odpowiedzi HTTP i zamknięcia połączenia. Widzimy tutaj kodźródło