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!
4 réponses
Mise À Jour Express 2015:
Utilisez ceci à la place:
res.sendStatus(200)
Ceci a été déprécié:
res.send(200)
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"});
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);
}
Dans express 4 vous devriez faire:
res.status(200).json({status:"ok"})
Au Lieu de l'obsolète:
res.json(200,{status:"ok"})