web-dev-qa-db-fra.com

NodeJS/Express: Qu'est-ce que "app.use"?

Dans les docs du module NodeJS express , l'exemple de code a app.use(...)

Qu'est-ce que la fonction use et où est-elle définie?

247
Alexander Bird

L'objet d'application est instancié lors de la création du serveur Express. Il possède une pile middleware} qui peut être personnalisée dans app.configure() (elle est désormais obsolète dans la version 4.x)

Pour configurer votre middleware, vous pouvez appeler app.use(<specific_middleware_layer_here>) pour chaque couche de middleware que vous souhaitez ajouter (elle peut être générique pour tous les chemins, ou déclenchée uniquement sur le ou les chemins spécifiques gérés par votre serveur). votre pile Express middleware. Les couches middleware peuvent être ajoutées une à une dans plusieurs invocations de use, ou même toutes en même temps, en série avec une seule invocation . Voir use documentation pour plus de détails.

Pour donner un exemple de compréhension conceptuelle d'Express Middleware, voici à quoi ressemble ma pile de middleware d'application (app.stack) lors de la journalisation de mon objet d'application sur la console en tant que JSON:

stack: 
   [ { route: '', handle: [Function] },
     { route: '', handle: [Function: static] },
     { route: '', handle: [Function: bodyParser] },
     { route: '', handle: [Function: cookieParser] },
     { route: '', handle: [Function: session] },
     { route: '', handle: [Function: methodOverride] },
     { route: '', handle: [Function] },
     { route: '', handle: [Function] } ]

Comme vous pouvez peut-être en déduire, j'ai appelé app.use(express.bodyParser()), app.use(express.cookieParser()), etc., qui a ajouté ces "couches" de middleware express à la pile de middleware. Notez que les itinéraires sont vides, ce qui signifie que lorsque j'ai ajouté ces couches de middleware, j'ai spécifié qu'elles seraient déclenchées sur n'importe quel itinéraire. Si j’ajoutais une couche de middleware personnalisée qui ne s’était déclenchée que sur le chemin /user/:id, elle serait reflétée sous forme de chaîne dans le champ route de cet objet de couche middleware dans l’impression de pile ci-dessus.

Chaque couche ajoute essentiellement une fonction qui gère spécifiquement quelque chose dans votre flux via le middleware.

Par exemple. en ajoutant bodyParser, vous vous assurez que votre serveur gère les demandes entrantes via le middleware express. Ainsi, l'analyse du corps des demandes entrantes fait maintenant partie de la procédure suivie par votre middleware pour gérer les demandes entrantes} - tout cela parce que vous avez appelé app.use(bodyParser).

287
chinnychinchin

use est une méthode de configuration du middleware utilisé par les routes de l'objet serveur HTTP Express. La méthode est définie dans le cadre de Connect sur lequel Express est basé.

38
JohnnyHK

Chaque app.use (middleware) est appelé chaque fois qu'une demande est envoyée au serveur. 

19
Tyrese

app.use () utilisé pour monter la fonction middleware ou monter sur un chemin spécifié, la fonction middleware est exécutée lorsque le chemin de base correspond.

Par exemple: Si vous utilisez app.use () dans indexRouter.js, comme ceci:

//indexRouter.js

var adsRouter = require('./adsRouter.js');

module.exports = function(app) {
    app.use('/ads', adsRouter);
}

Dans le code ci-dessus, app.use () monte le chemin sur '/ ads' dans adsRouter.js.

Maintenant dans adsRouter.js

// adsRouter.js

var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;

Dans adsRouter.js, le chemin sera comme ceci pour ads- '/ ads/show', puis il fonctionnera selon controllerIndex.ads.showAd ()

app.use ([chemin], rappel, [rappel]): nous pouvons ajouter un rappel sur le même.

app.use('/test', function(req, res, next) {

  // write your callback code here.

    });
14
Shubham Verma

app.use () agit comme un middleware dans les applications express. Contrairement à app.get () et app.post () ou alors, vous pouvez utiliser app.use () sans spécifier l'URL de la demande. Dans un tel cas, il est exécuté à chaque fois, quelle que soit l'URL touchée.

5
Omkar Mote

app.use () fonctionne comme ça:

  1. Evénement de requête traité sur l'instance de serveur http du nœud.
  2. express .__ fait certaines de ses manipulations internes avec l'objet req.
  3. C'est à ce moment que express commence à faire les choses que vous avez spécifiées avec app.use

ce qui est très simple.

Et c'est seulement alors qu'Express fera le reste du travail, comme le routage.

4
Anton Stafeyev

Un middleware est un terme général désignant un logiciel servant à "coller", donc App.use est une méthode de configuration du middleware, par exemple: pour analyser et gérer le corps de la requête: app.use (bodyParser.urlencoded ({extended: true})); app.use (bodyParser.json ()); il existe de nombreux middlewares que vous pouvez utiliser dans votre application express Il suffit de lire la doc: http://expressjs.com/fr/guide/ using-middleware.html

1
user3432221

app.use est woks comme middleware pour la demande d'application . syntaxe

app.use('pass request format',function which contain request response onject)

exemple

app.use('/',funtion(req,res){
 console.log(all request pass through it);
// here u can check your authentication and other activities.
})

aussi vous pouvez l'utiliser en cas d'acheminement de votre demande.

app.use('/', roting_object);
1
chetan awate

app.use est un middleware de niveau application

Liez un middleware de niveau application à une instance de l'objet app à l'aide des fonctions app.use () et app.METHOD (), où METHOD est la méthode HTTP de la demande gérée par la fonction de middleware (telle que GET, PUT ou POST) en minuscule.

vous pouvez utiliser pour vérifier toutes les demandes. Par exemple, vous voulez vérifier le jeton/jeton d'accès dont vous avez besoin pour écrire un middleware en utilisant app.use pour vérifier le jeton dans la demande.

Cet exemple montre une fonction middleware sans chemin de montage. La fonction est exécutée chaque fois que l'application reçoit une demande.

var app = express()

app.use(function (req, res, next) {
  console.log('Time:', Date.now())
  next()
})

référence de https://expressjs.com/en/guide/using-middleware.html

1
Osama Bari

Dans express si nous Importons express de "express" Et utilisons app = express (); Then app ayant toutes les fonctionnalités de

si nous utilisons app.use ()

avec n'importe quelle fonction module/middleware à utiliser dans tout projet express 

1
saurabh kumar

app.use applique le middleware spécifié à la pile de middleware d'application principale. Lors de la connexion d'un middleware à la pile d'applications principale, l'ordre de connexion est important. si vous attachez un middleware A avant un middleware B, le middleware A sera toujours exécuté en premier. Vous pouvez spécifier un chemin pour lequel un middleware particulier est applicable. Dans l'exemple ci-dessous, «hello world» sera toujours enregistré avant «joyeuses fêtes».

const express = require('express')
const app = express()

app.use(function(req, res, next) {
  console.log('hello world')
  next()
})

app.use(function(req, res, next) {
  console.log('happy holidays')
  next()
})
1
Rubin bhandari
app.use(function middleware1(req, res, next){
   // middleware1 logic
}, function middleware1(req, res, next){
   // middleware2 logic
}, ... middlewareN);

app.use est un moyen d'enregistrer middleware ou chaîne de middlewares (ou plusieurs middlewares) avant d'exécuter toute logique de fin de route ou de route intermédiaire en fonction de l'ordre de la séquence d'enregistrement du middleware.

Middleware: forme une chaîne de fonctions/middleware-functions avec 3 paramètres req, res et next . next est le rappel qui fait référence à la fonction middleware suivante dans la chaîne et, dans le cas de la dernière fonction middleware, pointe ensuite à la fonction first-middleware de la chaîne middlerare enregistrée suivante.

app.use() est une méthode middleware.

La méthode middleware est comme un intercepteur en Java, cette méthode est toujours exécutée pour toutes les requêtes.

But et utilisation du middleware: -

  1. Pour vérifier si la session a expiré ou non
  2. pour l'authentification et l'autorisation de l'utilisateur
  3. rechercher un cookie (date d'expiration)
  4. analyser les données avant la réponse
0
Mohan

En bref, app.use () prend en charge tous les types de requêtes [par exemple: get, post, ...] De sorte qu’il est principalement utilisé pour configurer le middelware . Ou peut être utilisé lorsque les routes et les fonctions sont séparées

exemple:

app.use("/test",functionName)

et functionName se trouve dans un fichier différent

0
Snivio

Liez le middleware de niveau application à une instance de l'objet app à l'aide des fonctions app.use () et app.METHOD (), où METHOD est la méthode HTTP de la demande gérée par la fonction de middleware (telle que GET, PUT ou POST) en minuscule.

0
Rajeev Kumar Verma

Il vous permet d'utiliser n'importe quel middleware ( en savoir plus ) comme body_parser, CORS, etc. Le middleware peut modifier les objets request et response. Il peut également exécuter un morceau de code.

0

Vous pouvez également créer votre propre fonction middleware comme

app.use( function(req, res, next) {
  // your code 
  next();
})

Il contient trois paramètres req, res, next 
Vous pouvez également l’utiliser pour l’authentification et la validation des paramètres d’entrée afin de conserver votre contrôleur propre.

next() est utilisé pour passer au middleware ou à la route suivants. 
Vous pouvez envoyer la réponse du middleware

0
Ashvin Ahjolia

app.use est une fonction qui nécessite un middleware. Par exemple:

 app.use('/user/:id', function (req, res, next) {
       console.log('Request Type:', req.method);
        next();
     });

Cet exemple montre la fonction middleware installée dans le chemin /user/:id. Cette fonction est exécutée pour tout type de requête HTTP dans le chemin /user/:id.

Il est similaire au serveur Web REST, utilisez simplement /xx pour représenter différentes actions.

0
Hongnan Yan