Można więc spróbować pobrać następujący obiekt JSON:
$ curl -i -X GET http://echo.jsontest.com/key/value/anotherKey/anotherValue
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=ISO-8859-1
Date: Wed, 30 Oct 2013 22:19:10 GMT
Server: Google Frontend
Cache-Control: private
Alternate-Protocol: 80:quic,80:quic
Transfer-Encoding: chunked
{
"anotherKey": "anotherValue",
"key": "value"
}
$
Czy istnieje sposób na utworzenie dokładnie tego samego ciała w odpowiedzi z serwera używającego węzła lub ekspresowego? Oczywiście można ustawić nagłówki i wskazać, że typem odpowiedzi będzie „application / json”, ale istnieją różne sposoby pisania / wysyłania obiektu. Ten, który często widziałem, jest używany za pomocą polecenia formularza:
response.write(JSON.stringify(anObject));
Ma to jednak dwa punkty, w których można argumentować, jakby to były „problemy”:
- Wysyłamy ciąg.
- Ponadto na końcu nie ma nowego znaku linii.
Innym pomysłem jest użycie polecenia:
response.send(anObject);
Wygląda na to, że wysyła obiekt JSON na podstawie danych wyjściowych curl podobny do pierwszego przykładu powyżej. Jednak na końcu treści nie ma nowego znaku linii, gdy zawinięcie jest ponownie używane na terminalu. Jak zatem można zapisać coś takiego, dodając na końcu nowy znak linii za pomocą węzła lub węzła / ekspresu?
źródło
res.send
automatycznie ustawicontent-type
JSON, jeśli wysłany element jest obiektem lub tablicą.res.end()
w swoimhttp
(nie ekspresowym) przykładzieres.send()
nie działa. Popraw to, jeśli jest to pomyłka.res.end()
działa poprawnie. Dziękuję btw.Od Express.js 3x obiekt odpowiedzi ma metodę json (), która ustawia poprawnie wszystkie nagłówki i zwraca odpowiedź w formacie JSON.
Przykład:
źródło
Jeśli próbujesz wysłać plik Json, możesz użyć strumieni
źródło
res.json()
Funkcja powinna być wystarczająca dla większości przypadków.W
res.json()
nawróceni funkcyjne parametr przekazać do JSON użyciuJSON.stringify()
i ustawiaContent-Type
nagłówek doapplication/json; charset=utf-8
tak HTTP klienci wiedzą, do automatycznego analizowania odpowiedzi.źródło
jeśli używasz Express, możesz użyć tego:
lub po prostu to
źródło
Możesz go upiększyć za pomocą potoku i jednego z wielu procesorów. Twoja aplikacja powinna zawsze reagować przy jak najmniejszym obciążeniu.
https://github.com/ddopson/underscore-cli
źródło
Możesz w tym celu stworzyć pomocnika: utwórz funkcję pomocnika, abyś mógł z niej korzystać wszędzie w swojej aplikacji
Oto moja ścieżka tematyczna, w której próbuję uzyskać wszystkie tematy
Otrzymujemy odpowiedź
źródło
Można użyć oprogramowania pośredniego, aby ustawić domyślny typ zawartości i ustawić inaczej typ zawartości dla poszczególnych interfejsów API. Oto przykład:
źródło
Jeśli chodzi o nagłówek w połowie pytania, wykrzyknę
res.type
tutaj:jest równa
Źródło: express docs :
źródło
Starsza wersja Express używa
app.use(express.json())
lubbodyParser.json()
przeczytaj więcej o oprogramowaniu pośrednim bodyParserW najnowszej wersji ekspresu moglibyśmy po prostu użyć
res.json()
źródło
req.body
obiekt jest wysyłany jako treść żądania.