Maison  >  Article  >  interface Web  >  Que sont les middlewares de nœuds ?

Que sont les middlewares de nœuds ?

藏色散人
藏色散人original
2021-12-10 13:52:343650parcourir

Le middleware de nœud comprend : 1. koa-bodyparser ; 2. koa-body ; 3. gestionnaire de ressources statiques koa-static 4. cors ; 6. koa-cors2 définit les en-têtes de requête, etc.

Que sont les middlewares de nœuds ?

L'environnement d'exploitation de cet article : système Windows 7, nodejs version 10.16.2, ordinateur Dell G3.

Que sont les middlewares de nœuds ?

type de middleware de nœud :

le middleware de nœud est la fonction de traitement des requêtes http encapsulées dans le programme. Le middleware de nœud est exécuté dans le pipeline. Le middleware se situe au-dessus du système d'exploitation client/serveur et gère les ressources informatiques et les communications réseau.

Le middleware sert l'activité logique principale et peut être divisé en : middleware au niveau de l'application, middleware au niveau du routage, middleware intégré, middleware tiers et middleware au niveau des erreurs.

Middleware couramment utilisé dans Node :

J'ai accumulé de nombreux middlewares utiles au cours du processus d'apprentissage de Node. La plupart de ces middlewares doivent être utilisés en conjonction avec koa

1 koa-bodyparser

Ce plug-in est utilisé pour analyser les paramètres apportés par la requête de publication frontale

//入口文件
const bodyParser = require('koa-bodyparser');
app.use(bodyParser({//设置可以接收的数据类型
    enableTypes:['json', 'form', 'text']
}))
async function (ctx) {
    console.log(ctx.request.body)
    ctx.req.on('data',(data) => {
        console.log(JSON.parse(data),'文件')
    })
}

Si koa-bodyparser n'est pas introduit, il ne peut être utilisé que via ctx.req .on('data',callback) pour obtenir les paramètres

Après l'introduction du middleware, seul ctx.request.body peut obtenir les paramètres. Beaucoup plus pratique que le premier.

2. koa-body

Ce plug-in est utilisé pour obtenir les fichiers et les informations sur les fichiers téléchargés dans la demande, tels que les images et les fichiers zip

const koaBody    = require('koa-body')
app.use(koaBody({
        multipart: true,
        formidable: {
            maxFileSize: 20 * 1024 * 1024    // 设置上传文件大小最大限制,默认2M
        }
    }))

Dans le traitement de la demande, vous pouvez directement obtenir tout cela via ctx .request.files Informations sur le fichier téléchargé.

Attention ! ! ! Après avoir utilisé koa-body, n'utilisez pas koa-bodyparser. Cela entraînerait un conflit, ce qui entraînerait l'annulation du code d'état renvoyé par la demande de publication frontale

3. Gestionnaire de ressources statiques koa-static

J'ai téléchargé une photo en local. testing. Imprimez ensuite l'adresse de l'image et ce sera une longue chaîne de c://.../name/.png Bien qu'elle soit accessible localement, elle ne fonctionnera pas si elle est placée sur le serveur !

En introduisant koa-static, vous pouvez spécifier l'adresse du fichier statique dans un dossier sur le chemin du projet, puis accéder à l'image directement via le port surveillé par koa à l'adresse http://192.168.0.177:3030/name.png

const koaStatic  = require('koa-static')
app.use(koaStatic('./public'))//括号中是设置的静态文件路径

4. Cors, koa-cors, koa-cors2 définissent les en-têtes de requête

J'utilise essentiellement ces middlewares pour configurer plusieurs domaines et demander des informations d'en-tête

const cors       = require('koa2-cors') 
app.use(cors({
    exposeHeaders: ['multipart/form-data','application/x-www-form-urlencoded']
}))

Vous pouvez définir les paramètres vous-même ou les appliquer directement sans définir de paramètres (cors. ()) peut traverser des domaines.

En parlant de cross-domain ici, permettez-moi de mentionner la méthode de configuration inter-domaine du nœud natif (vous pouvez également définir diverses configurations de l'en-tête de requête)

app.use(async (ctx, next) => {
   ctx.set('Access-Control-Allow-Origin', ctx.headers.origin)//'*'有可能会问题
   ctx.set('Access-Control-Allow-Credentials', 'true')
   ctx.set('Access-Control-Allow-Headers', 'Origin ,multipart/form-data, X-Requested-With, Content-Type, Accept')
   await next()
})

Si vous rencontrez un middleware utile à l'avenir, je l'enregistrerai ! ! !

Apprentissage recommandé : "Tutoriel vidéo Node.js"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn