Comment puis-je envoyer un statut de succès au navigateur à partir de nodejs / express?

J'ai écrit le code suivant dans mon serveur NodeJS / Expressjs:

app.post('/settings', function(req, res){
var myData = {
    a: req.param('a')
    ,b: req.param('b')
    ,c: req.param('c')
    ,d: req.param('d')
}

var outputFilename = 'config.json';

fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log("Config file as been overwriten");
    }
}); 

});

Cela me permet d'obtenir les données de formulaire soumises et de les écrire dans un fichier JSON.

Cela fonctionne parfaitement. Mais le client reste dans une sorte d'état de publication et finit par expirer. J'ai donc besoin d'envoyer une sorte d'état de succès ou d'en-tête de succès au client.

Comment dois-je faire cela?

Merci d'avance!

39
demandé sur mikemaccana 2012-11-15 16:38:48

4 réponses

Mise À Jour Express 2015:

Utilisez ceci à la place:

res.sendStatus(200)

Ceci a été déprécié:

res.send(200)  
90
répondu ac360 2016-03-29 15:54:06

Je voulais juste ajouter, que vous pouvez envoyer json via l'assistant res.json().

res.json({ok:true}); // status 200 is default

res.json(500, {error:"internal server error"}); // status 500

Mise à jour 2015:

res.json(status, obj) a été dépréciée en faveur de res.status(status).json(obj)

res.status(500).json({error: "Internal server error"});
24
répondu Aron Woost 2015-08-10 07:13:09

Jup, vous devez envoyer une réponse, le plus simple serait

res.send(200);

Dans le gestionnaire de rappel de writeFile.

Le 200 est un code D'état HTTP, donc vous pouvez même le modifier en cas d'échec:

if (err) {
    res.send(500);
} else {
    res.send(200);
}
9
répondu Samuel 2012-11-15 13:35:44

Dans express 4 vous devriez faire:

res.status(200).json({status:"ok"})

Au Lieu de l'obsolète:

res.json(200,{status:"ok"})
8
répondu user2468170 2015-04-29 07:17:32