Qu’est-ce que le middleware Express ? Comment l'utiliser dans Node ? L'article suivant vous présentera l'utilisation simple du middleware Express. J'espère qu'il vous sera utile !
Le middleware fait spécifiquement référence au lien de traitement intermédiaire des processus métier.
Lorsqu'une requête atteint le serveur Express, plusieurs middlewares peuvent être appelés en continu pour prétraiter la requête.
est essentiellement une fonction de traitement de fonction
Remarque : la liste formelle des paramètres de la fonction middleware doit contenir le paramètre suivant. La fonction de traitement de routage ne contient que req et res,
// next参数必须在最后一个传入 const mw = (req, res, next) => { ... // next()必须在最后调用 next() }
next est la clé pour réaliser l'appel continu de plusieurs middlewares. Cela signifie transférer la relation de circulation vers le middleware suivant. ou le routage.
Toute requête initiée par le client déclenchera le middleware après avoir atteint le serveur, appelé middleware globalement efficace. En appelant server.use (fonction middleware), vous pouvez définir un middleware globalement efficace. L'exemple de code est le suivant :
const mw = (req, res, next) => { next() } const mw1 = (req, res, next) => { next() } // 全局生效的中间件,中间件调用顺序以传入顺序为准 server.use(mw,mw1)
Le middleware local ne fonctionne que sur un chemin de routage spécifié Efficace
const mw = (req, res, next) => { next() } const mw1 = (req, res, next) => { next() } // 局部生效的中间件 server.get('/',mw,(req,res)=>{ res.send('路径:/') }) // 定义多个局部生效的中间件 // 1、直接逗号分隔 server.get('/',mw,mw1,(req,res)=>{ res.send('路径:/') }) // 2、或者使用数组包含 server.get('/',[mw,mw1],(req,res)=>{ res.send('路径:/') })
Plusieurs middlewares partagent les mêmes req et res. Sur la base de cette fonctionnalité, nous pouvons ajouter uniformément des attributs ou des méthodes personnalisés aux objets req ou res dans le middleware en amont pour une utilisation par le middleware ou le routage en aval.
const mw = (req, res, next) => { // 添加属性 req.startTime=new Date() next() }
Assurez-vous d'enregistrer le middleware avant le routage
Les demandes envoyées par le client peuvent continuellement appeler plusieurs middlewares pour le traitement
Après l'exécution de l'entreprise code du middleware, n'oubliez pas d'appeler la fonction next()
Afin d'éviter toute confusion dans la logique du code, n'écrivez pas de code supplémentaire après avoir appelé la fonction next()
Lors de l'appel continu de plusieurs middlewares, partager des objets req et res entre plusieurs middlewares
Middleware au niveau de l'application
Middleware au niveau de la route
Middleware au niveau de l'erreur
Express construit- dans le middleware
Middleware tiers
Introduction détaillée :
Middleware au niveau de l'application
Via app.use() ou app.get( ) ou app.post(), le middleware lié à l'instance d'application est appelée middleware au niveau de l'application. L'exemple de code est le suivant :
// 全局生效的中间件(应用级别的中间件) server.use(mw,mw1) // 局部生效的中间件(应用级别的中间件) server.get('/',mw,mw1,(req,res)=>{ res.send(`请求进入服务器的时间:${req.startTime}`) })
Middleware au niveau du routage
lié à l'instance express.Router() Le middleware est appelé middleware au niveau du routage. Son utilisation n'est pas différente de celle d'un middleware au niveau de l'application. Cependant, le middleware au niveau de l'application est lié à l'instance d'application et le middleware au niveau du routage est lié à l'instance du routeur. L'exemple de code est le suivant :
const router = require('./router/router') // 路由级别的中间件 router.use((req,res,next)=>{ next() })
Middleware au niveau de l'erreur
Le rôle du middleware au niveau de l'erreur. : Spécialisé Utilisé pour capturer les erreurs anormales qui se produisent tout au long du projet afin d'éviter que le projet ne plante anormalement.
Format : La fonction de traitement des fonctions du middleware de niveau d'erreur doit avoir 4 paramètres formels. L'ordre des paramètres formels d'avant en arrière est (err, req, res, next).
Remarque : le middleware de niveau d'erreur doit être enregistré après toutes les routes !
// 人为制造错误 server.get('/err', (req, res) => { throw new Error('人为抛出错误!!!') res.send('err Page') }) // 定义错误级别的中间件 server.use((err, req, res, next) => { console.log('发生了错误:' + err.message); res.send('Error:'+err.message) next() })
Le middleware intégré d'Express
Depuis la version Express 4.16.0, Express intègre 3 middlewares couramment utilisés, qui sont extrêmement améliorés. l'efficacité de développement et l'expérience des projets Express :
express.static est un middleware intégré qui héberge rapidement des ressources statiques, telles que : des fichiers HTML, des images, des styles CSS, etc. (pas de compatibilité)
express .json Analyser les données du corps de la requête au format JSON (avec compatibilité, disponible uniquement dans la version 4.16.0+)
express.urlencoded Analyser les données du corps de la requête au format codé URL (avec compatibilité, disponible uniquement dans la version 4.16.0+) ) Disponible dans)
// 配置解析application/json格式数据的内置中间件 server.use(express.json()) // 配置解析application/x-www-form-urlencoded格式数据的内置中间件 server.use(express.urlencoded({ extended: false })) // 测试解析json的内置中间件 server.post('/user',(req,res)=>{ // 在服务器,可以使用req.body这个属性来接受客户端发送过来的请求数据 // 默认情况下,如果不配置解析表单数据的中间件,则req.body默认等于undefined console.log(req.body); res.send('ok') }) // 测试解析urlencoded的内置中间件 server.post('/book',(req,res)=>{ console.log(req.body) res.send('book ok') })
Le middleware tiers
n'est pas officiellement intégré à Express, mais est développé par un tiers, appelé middleware tiers. Dans le projet, vous pouvez télécharger et configurer des middlewares tiers à la demande, améliorant ainsi l'efficacité du développement du projet.
Par exemple : dans les versions antérieures à express@4.16.0
, le middleware tiers body-parser
était souvent utilisé pour analyser les données du corps de la requête. Les étapes d'utilisation sont les suivantes : express@4.16.0
之前的版本中,经常使用body-parser
这个第三方中间件,来解析请求体数据。使用步骤如下:
运行npm install body-parser
安装中间件
使用require导入中间件
调用server.use()
npm install body-parser
pour installer le middleware 🎜🎜🎜🎜Utilisez require pour importer le middleware 🎜🎜🎜🎜Appelez server.use( )
Enregistrez-vous et utilisez le middleware 🎜Remarque : le middleware express.urlencoded intégré d'Express est en outre encapsulé sur la base de l'analyseur de corps de middleware tiers.
Pour plus de connaissances sur les nœuds, veuillez visiter : tutoriel nodejs !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!