Man kann also versuchen, das folgende JSON-Objekt abzurufen:
$ 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"
}
$
Gibt es eine Möglichkeit, in einer Antwort von einem Server mit Node oder Express genau denselben Text zu erzeugen? Natürlich kann man die Header setzen und angeben, dass der Inhaltstyp der Antwort "application / json" sein wird, aber dann gibt es verschiedene Möglichkeiten, das Objekt zu schreiben / zu senden. Das, was ich häufig gesehen habe, ist die Verwendung eines Befehls des Formulars:
response.write(JSON.stringify(anObject));
Dies hat jedoch zwei Punkte, an denen man argumentieren könnte, als wären sie "Probleme":
- Wir senden eine Zeichenfolge.
- Außerdem gibt es am Ende kein neues Zeilenzeichen.
Eine andere Idee ist, den Befehl zu verwenden:
response.send(anObject);
Dies scheint ein JSON-Objekt zu senden, das auf der Ausgabe von Curl basiert, ähnlich dem ersten Beispiel oben. Es gibt jedoch kein neues Linienzeichen am Ende des Körpers, wenn Curl wieder an einem Terminal verwendet wird. Wie kann man so etwas tatsächlich mit einem neuen Zeilenzeichen aufschreiben, das am Ende mit node oder node / express angehängt wird?
quelle
res.send
wird automatischcontent-type
auf JSON gesetzt, wenn das gesendete Element ein Objekt oder Array ist.res.end()
in Ihremhttp
(nicht ausdrücklichen) Beispiel verwendenres.send()
funktioniert nicht. Bitte korrigieren Sie es, wenn es ein Fehler ist.res.end()
funktioniert richtig. Danke übrigens.Seit Express.js 3x verfügt das Antwortobjekt über eine json () -Methode, die alle Header korrekt für Sie festlegt und die Antwort im JSON-Format zurückgibt.
Beispiel:
quelle
Wenn Sie versuchen, eine JSON-Datei zu senden, können Sie Streams verwenden
quelle
Die
res.json()
Funktion sollte in den meisten Fällen ausreichend sein.Die
res.json()
Funktion konvertiert den Parameter, den Sie mit JSON übergeben,JSON.stringify()
und setzt denContent-Type
Header auf,application/json; charset=utf-8
damit HTTP-Clients die Antwort automatisch analysieren können.quelle
Wenn Sie Express verwenden, können Sie Folgendes verwenden:
oder einfach das
quelle
Sie können es einfach mit Pipe und einem von vielen Prozessoren verschönern. Ihre App sollte immer mit möglichst geringer Last reagieren.
https://github.com/ddopson/underscore-cli
quelle
Sie können dafür einen Helfer erstellen: Erstellen Sie eine Hilfsfunktion, damit Sie sie überall in Ihrer Anwendung verwenden können
Hier ist meine Themenroute, auf der ich versuche, alle Themen abzurufen
Antwort bekommen wir
quelle
Sie können eine Middleware verwenden, um den Standardinhaltstyp festzulegen und den Inhaltstyp für bestimmte APIs unterschiedlich festzulegen. Hier ist ein Beispiel:
quelle
Für die Kopfzeithälfte der Frage werde ich hier einen Gruß aussprechen
res.type
:ist äquivalent zu
Quelle: Expressdokumente :
quelle
Ältere Express-Versionen verwenden
app.use(express.json())
oderbodyParser.json()
lesen Sie mehr über bodyParser MiddlewareAuf der neuesten Version von Express könnten wir einfach verwenden
res.json()
quelle
req.body
das Objekt als Hauptteil der Anforderung gesendet wird.