web-dev-qa-db-fra.com

Comment renvoyer des en-têtes de réponse avec Node.js / Express?

J'utilise res.send et quoi qu'il en soit, il renvoie un état de 200. Je veux définir ce statut sur différents nombres pour différentes réponses (erreur, etc.)

Ceci utilise express

25
Shamoon
res.writeHead(200, {'Content-Type': 'text/event-stream'});

http://nodejs.org/docs/v0.4.12/api/http.html#response.writeHead

30
chovy

Pour ajouter des en-têtes de réponse avant l'envoi , vous pouvez utiliser la méthode setHeader:

response.setHeader('Content-Type', 'application/json')

Le statut uniquement par la méthode status:

response.status(status_code)

Les deux en même temps avec la méthode writeHead:

response.writeHead(200, {'Content-Type': 'application/json'});
26
Z. Khullah

Je suppose que vous utilisez une bibliothèque comme "Express", car nodejs ne fournit pas ares.send méthode.

Comme dans le Guide express , vous pouvez passer un deuxième argument facultatif pour envoyer l'état de la réponse, tel que:

// Express 3.x
res.send( "Not found", 404 );

// Express 4.x
res.status(404).send("Not found");
16
Nican

Puisque la question mentionne également Express, vous pouvez également le faire de cette façon en utilisant un middleware.

app.use(function(req, res, next) {
  res.setHeader('Content-Type', 'text/event-stream');
  next();
});
6
mbokil

Vous devez utiliser la méthode setHeader et la méthode status pour votre usage.

SOLUTION:

app.post('/login', function(req, res) {

  // ...Check login credentials with DB here...

  if(!err) {
    var data = {
      success: true,
      message: "Login success"
    };

    // Adds header
    res.setHeader('custom_header_name', 'abcde');

    // responds with status code 200 and data
    res.status(200).json(data);
  }
});
4
Naveen Kumar V

Dans la documentation de express (4.x), res.sendStatus est utilisé pour envoyer des définitions de code d'état. Comme il est mentionné ici chacun a une description spécifique.

res.sendStatus(200); // equivalent to res.status(200).send('OK')
res.sendStatus(403); // equivalent to res.status(403).send('Forbidden')
res.sendStatus(404); // equivalent to res.status(404).send('Not Found')
res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error')
4
cs04iz1

j'utilise ceci avec express

res.status(status_code).send(response_body);

et cela sans express (serveur http normal)

res.writeHead(404, {
    "Content-Type": "text/plain"
});
res.write("404 Not Found\n");
res.end();
3
fuelusumar

set statusCode var avant l'appel send ()

res.statusCode = 404;
res.send();
3
Yura