Jaka jest rzeczywista różnica między res.send
i res.json
ponieważ oba wydają się wykonywać tę samą operację reagowania na klienta.
200
Jaka jest rzeczywista różnica między res.send
i res.json
ponieważ oba wydają się wykonywać tę samą operację reagowania na klienta.
Odpowiedzi:
Metody są identyczne, gdy przekazywany jest obiekt lub tablica, ale
res.json()
będą także konwertować obiekty niebędące obiektami, takie jaknull
iundefined
, które nie są poprawnym JSON.Metoda korzysta również z ustawień aplikacji
json replacer
ijson spaces
, dzięki czemu można sformatować JSON z większą liczbą opcji. Te opcje są ustawione tak:I przeszedł do
JSON.stringify()
podobnego:To jest kod w
res.json()
metodzie, której nie ma metoda send:Metoda kończy się
res.send()
na końcu:źródło
https://github.com/visionmedia/express/blob/ee228f7aea6448cf85cc052697f8d831dce785d5/lib/response.js#L174
res.json
ostatecznie dzwonires.send
, ale wcześniej to:json spaces
ijson replacer
aplikacjiźródło
Sprawdzanie wysłanych nagłówków ... res.send używa content-type: text / html
res.json używa content-type: application / json
źródło
res.json
zmusza argument do JSON.res.send
weźmie obiekt lub tablicę inną niż json i wyśle inny typ. Na przykład:Zwróci to numer JSON.
Zwróci kod statusu i wyświetli ostrzeżenie, aby użyć sendStatus.
Jeśli twój argument nie jest obiektem lub tablicą JSON (null, undefined, boolean, string) i chcesz upewnić się, że jest wysyłany jako JSON, użyj
res.json
.źródło