web-dev-qa-db-fra.com

Envoi d'un fichier JSON au serveur Express à l'aide de JS

JS est relativement nouveau, et j’ai besoin d’un fichier JSON que j’ai besoin d’envoyer à mon serveur (Express) que je puisse ensuite analyser et utiliser pour l’utiliser dans les applications Web que je construis. 

Voici ce que j'ai maintenant:

  • un fichier JSON nommé data.json
  • une configuration de serveur Express s'exécutant sur un hôte local
  • un code merdique:

    app.get ('/ search', fonction (req, res) { res.header ("Content-Type", 'application/json'); res.send (JSON.stringify ({/ data .json /}));});

Dans le code ci-dessus, j'essaie simplement d'envoyer le fichier à localhost: 3000/search et à voir mon fichier JSON, mais tout ce que je reçois lorsque je vais sur ce chemin est {}. Quelqu'un peut-il expliquer?

Toute aide serait immensément appréciée. Merci beaucoup d'avance.

A bientôt, Theo

Exemple d'extrait de data.json:

[{
    "name": "Il Brigante",
    "rating": "5.0",
    "match": "87",
    "cuisine": "Italian",
    "imageUrl": "/image-0.png"
}, {
    "name": "Giardino Doro Ristorante",
    "rating": "5.0",
    "match": "87",
    "cuisine": "Italian",
    "imageUrl": "/image-1.png"
}]
5
Theo Strauss

Assurez-vous simplement que vous avez besoin du fichier correct en tant que variable, puis transmettez-la à votre res.send!

const data = require('/path/to/data.json')

app.get('/search', function (req, res) {
  res.header("Content-Type",'application/json');
  res.send(JSON.stringify(data));
})

De plus, ma préférence personnelle est d'utiliser res.json car cela définit l'en-tête automatiquement.

app.get('/search', function (req, res) {
  res.json(data);
})
8
Khauri McClain

Essayez res.json (data.json) au lieu de res.send (...

2
user5480949

Une autre option consiste à utiliser sendFile et à définir l'en-tête du type de contenu.

app.get('/search', (req, res) => {
    res.header("Content-Type",'application/json');
    res.sendFile(path.join(__dirname, 'file_name.json'));
})

Le code suppose que le fichier se trouve dans le même répertoire que le code JS. Cette réponse explique comment cela fonctionne.

1
Ian

Lisez d'abord le fichier, puis envoyez le JSON au client.

fs.readFile('file_name.json', 'utf8', function (err, data) {
  if (err) throw err;
  obj = JSON.parse(data);
  res.send(JSON.stringify(obj));
});
0
Arpit Solanki