sails.js
Le routage
Recherche…
Remarques
Les routes sont des règles qui indiquent à Sails quoi faire face à une requête entrante.
Les routes sont définies dans config/routes.js
. L'ordre des routes est important, car les routes sont appariées de haut en bas. Cela signifie que si un itinéraire spécifique peut également être associé à un itinéraire générique, l'itinéraire spécifique doit être défini au-dessus de l'itinéraire générique.
Lorsqu'une requête entre dans votre application, sails.js récupère tous les paramètres qui l'accompagnent et les met à votre disposition en tant que params
sur l'objet de requête.
Les propriétés de l'objet cible de routage seront transmises au gestionnaire de routage dans l'objet req.options. Les propriétés réservées suivantes peuvent affecter le comportement du gestionnaire de routage:
Propriété | Types de cibles applicables | Type de données | Détails |
---|---|---|---|
sauterAssets | tout | Booléen | Défini sur true si vous ne souhaitez pas que la route corresponde aux URL contenant des points (par exemple, myImage.jpg). Cela gardera vos routes avec une notation générique à partir des URL correspondantes des ressources statiques. Utile lors de la création de slugs URL. |
skipRegex | tout | Regexp | Si ignorer chaque URL contenant un point est trop permissif ou si vous devez ignorer un gestionnaire de route en fonction de différents critères, vous pouvez utiliser skipRegex . Cette option vous permet de spécifier une expression régulière ou un tableau d'expressions régulières pour correspondre à l'URL de la demande; Si l'une des correspondances réussit, le gestionnaire est ignoré. Notez que contrairement à la syntaxe de liaison d'un gestionnaire avec une expression régulière, skipRegex attend des objets _Exact RegExp, pas des chaînes. |
des locaux | contrôleur, vue, plan, réponse | dictionnaire | Définit les variables locales par défaut à transmettre à toute vue rendue lors du traitement de la demande. |
cors | tout | Dictionnaire ou booléen ou chaîne | Spécifie comment gérer les demandes pour cette route à partir d'une origine différente. |
peupler | plan | Booléen | Indique si les champs de modèle associés doivent être remplis dans les résultats d'une action blueprint "find" ou "findOne". Valeur par défaut à la valeur définie dans config/blueprints.js . |
sauter , limiter , trier , où | plan | dictionnaire | Définir les critères pour "trouver" le plan. |
Définitions de route RESTful personnalisées
module.exports.routes = {
'GET /foo': 'FooController.index',
'GET /foo/new': 'FooController.new',
'POST /foo/create': 'FooController.create',
'GET /foo/:id/edit': 'FooController.edit',
'PUT /foo/:id/update': 'FooController.update',
'GET /foo/:id': 'FooController.show',
'DELETE /foo/:id': 'FooController.delete',
};
Réorienter
module.exports.routes = { '/foo': '/bar', 'GET /google': 'http://www.google.com' };
Définir une variable personnalisée pour toutes les vues
module.exports.routes = { // This function will be executed for all http verbs on all urls 'all /*', function (req, res, next) { // Expose the function `fooBar` to all views (via the locals object) res.locals.fooBar = function (arg1) { return 'foobar' + arg1; }; }, };
Ignorer les actifs (URL contenant des points) de la route générique
module.exports.routes = { 'GET /foo/*': { fn: function(req, res) { res.send("FOO!"); }, skipAssets: true }, };
Routes avec RegEx
module.exports.routes = {
// sends matching regex (few patterns) as 'page' param
'r|/foo/([0-9]+)|page': 'FooController.get',
'r|/foo/(.*)|page': 'FooController.get',
'r|/foo/(\\w+)|page': 'FooController.get'
};
Slugs d'URL
module.exports.routes = {
'GET /blog/:year/:month/:day/:posttitle/': 'BlogController.showPost',
'GET /blog/:year/:month/:day/': 'BlogController.showDayArchive',
'GET /blog/:year/:month/': 'BlogController.showMonthArchive',
'GET /blog/:year/': 'BlogController.showYearArchive',
};
Les paramètres transmis dans l'URL sont alors accessibles dans les actions de contrôleur correspondantes à l'aide de req.param('year')
, req.param('month')
etc.
Par exemple, un GET
demande /blog/2016/08/
déclenche l' BlogController.showMonthArchive
action du contrôleur, avec req.param('year')
ayant la valeur 2016
et req.param('month')
ayant la valeur 08
.