La propriété serverMiddleware
Défini le middleware côté serveur.
-
Type:
Array-
Items:
StringouObjectouFunction
-
Items:
Nuxt crée en interne une instance connect à laquelle vous pouvez ajouter votre propre middleware personnalisé. Cela nous permet d'enregistrer des routes supplémentaires (généralement des routes /api) sans avoir besoin d'un serveur externe.
Parce que Connect itself est un middleware, les middleware enregistrés fonctionneront avec nuxt start et aussi lorsqu'il est utilisé comme un middleware avec des usages programmatiques comme express-template . Les Modules nuxt peuvent également fournir serverMiddleware en utilisant this.addServerMiddleware()
En plus, nous avons introduit une option prefix dont la valeur par défaut est true. Elle ajoutera la base du routeur aux middlewares de votre serveur.
Exemple:
-
Chemin d'accès au middleware du serveur :
/server-middleware -
Base du routeur :
/admin -
Avec
prefix: true(par défaut):/admin/server-middleware -
Avec
prefix: false:/server-middleware
serverMiddleware vs middleware!
Ne le confondez pas avec routes middleware qui sont appelés avant chaque route par Vue pour les rendu monopage ou SSR. Les Middleware listés dans la propriété serverMiddleware s'exécutent côté serveur avant vue-server-renderer et peuvent être utilisés pour des tâches spécifiques au serveur comme le traitement des requêtes API ou pour le chargement des ressources.
Utilisation
Si le middleware est une chaîne de caractères, alors Nuxt essaiera de le résoudre automatiquement et le rendra requis.
import serveStatic from 'serve-static'
export default {
serverMiddleware: [
// Inscrira redirect-ssl dans les package npm
'redirect-ssl',
// Inscrira le fichier index du répertoire server-middleware pour gérer /server-middleware/*
{ path: '/server-middleware', handler: '~/server-middleware/index.js' },
// Nous pouvons également créer des instances personnalisées
{ path: '/static2', handler: serveStatic(__dirname + '/static2') }
]
}
Middleware de serveur personnalisé
Il est également possible d'écrire des Middleware personnalisés. Pour plus d'informations, voir Connect Docs .
Middleware (server-middleware/logger.js):
export default function (req, res, next) {
// req est l'objet de la requête http de Node.js
console.log(req.url)
// res est l'objet de réponse http de Node.js
// next est une fonction à appeler pour invoquer le prochain middleware
// N'oubliez pas d'appeler le suivant à la fin si votre middleware n'est pas un endpoint !
next()
}
serverMiddleware: [`~/server-middleware/logger`]
API endpoint personnalisé
Un middleware de serveur peut également étendre Express. Cela permet la création d'endpoint REST.
const bodyParser = require('body-parser')
const app = require('express')()
app.use(bodyParser.json())
app.all('/getJSON', (req, res) => {
res.json({ data: 'data' })
})
module.exports = app
serverMiddleware: [
{ path: "/server-middleware", handler: "~/server-middleware/rest.js" },
],
Syntaxe de l'objet
Si le middleware de votre serveur est constitué d'une liste de fonctions mises en correspondance avec des chemins d'accès :
export default {
serverMiddleware: [
{ path: '/a', handler: '~/server-middleware/a.js' },
{ path: '/b', handler: '~/server-middleware/b.js' },
{ path: '/c', handler: '~/server-middleware/c.js' }
]
}
Vous pouvez aussi passer un objet pour les définir, comme suit :
export default {
serverMiddleware: {
'/a': '~/server-middleware/a.js',
'/b': '~/server-middleware/b.js',
'/c': '~/server-middleware/c.js'
}
}
Clément Ollivier
Daniel Roe
Alex Hirzel
Ajeet Chaulagain
René Eschke
Sébastien Chopin
Nico Devs
Muhammad
Nazaré da Piedade
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Xanzhu
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian LEFEBVRE
Lucas
Julien SEIXAS
Hugo
Sylvain Marroufin
Spencer Cooley
Piotr Zatorski
Vladimir Semenov
Harry Allen
kazuya kawaguchi
Unai Mengual
Hyunseung Lee
Alexandre Chopin
pooya parsa
Nick Medrano
Mosaab Emam
Iljs Путлер Капут
Heitor Ramon Ribeiro
Nero
Yoon Han
Ikko Ashimine
FamCodings
Ayouli
F. Hinkelmann
felipesuri
Christophe Carvalho Vilas-Boas
Leoš Literák
Trizotti
Marcello Bachechi
Rodolphe
Thomas Underwood
Shek Evgeniy
Lukasz Formela
Hugo Torzuoli