Ainsi, on peut tenter de récupérer l'objet JSON suivant:
$ 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"
}
$
Existe-t-il un moyen de produire exactement le même corps dans une réponse d'un serveur utilisant node ou express? De toute évidence, on peut définir les en-têtes et indiquer que le type de contenu de la réponse sera "application / json", mais il existe alors différentes façons d'écrire / d'envoyer l'objet. Celui que j'ai vu couramment utilisé est en utilisant une commande de la forme:
response.write(JSON.stringify(anObject));
Cependant, cela comporte deux points sur lesquels on pourrait argumenter comme s'il s'agissait de «problèmes»:
- Nous envoyons une chaîne.
- De plus, il n'y a pas de nouveau caractère de ligne à la fin.
Une autre idée est d'utiliser la commande:
response.send(anObject);
Cela semble envoyer un objet JSON basé sur la sortie de curl similaire au premier exemple ci-dessus. Cependant, il n'y a pas de nouveau caractère de ligne à la fin du corps lorsque curl est à nouveau utilisé sur un terminal. Alors, comment peut-on réellement écrire quelque chose comme ça avec un nouveau caractère de ligne ajouté à la fin en utilisant node ou node / express?
la source
res.send
définira automatiquement lecontent-type
sur JSON, si l'élément envoyé est un objet ou un tableau.res.end()
dans votre exemplehttp
(non express)res.send()
ne fonctionne pas. Veuillez le corriger, s'il s'agit d'une erreur.res.end()
fonctionne correctement. Merci btw.Depuis Express.js 3x, l'objet de réponse a une méthode json () qui définit correctement tous les en-têtes pour vous et renvoie la réponse au format JSON.
Exemple:
la source
Si vous essayez d'envoyer un fichier json, vous pouvez utiliser des flux
la source
La
res.json()
fonction devrait être suffisante dans la plupart des cas.La
res.json()
fonction convertit le paramètre que vous transmettez à JSON à l'aide deJSON.stringify()
et définit l'en-Content-Type
tête pourapplication/json; charset=utf-8
que les clients HTTP sachent analyser automatiquement la réponse.la source
si vous utilisez Express, vous pouvez utiliser ceci:
ou juste ça
la source
Vous pouvez simplement le raffiner en utilisant pipe et l'un des nombreux processeurs. Votre application doit toujours répondre avec une charge aussi faible que possible.
https://github.com/ddopson/underscore-cli
la source
Vous pouvez créer un assistant pour cela: créez une fonction d'assistance pour pouvoir l'utiliser partout dans votre application
Voici mon itinéraire de sujet où j'essaie d'obtenir tous les sujets
Réponse que nous obtenons
la source
Vous pouvez utiliser un middleware pour définir le type de contenu par défaut et définir le type de contenu différemment pour des API particulières. Voici un exemple:
la source
Pour la moitié de la tête de la question, je vais crier
res.type
ici:est équivalent à
Source: documents express :
la source
Version plus ancienne d'Express
app.use(express.json())
ou enbodyParser.json()
savoir plus sur le middleware bodyParserSur la dernière version d'express, nous pourrions simplement utiliser
res.json()
la source
req.body
l'objet soit envoyé en tant que corps de la demande.