sails.js
Routing
Suche…
Bemerkungen
Routen sind Regeln, die Sails mitteilen, was bei einer eingehenden Anfrage zu tun ist.
Routen sind in config/routes.js
. Die Reihenfolge der Routen ist signifikant, da die Routen von oben nach unten abgeglichen werden. Das heißt, wenn Sie eine bestimmte Route haben, die auch von einer Wildcard-Route abgeglichen werden kann, sollte die bestimmte Route oberhalb der Wildcard-Route definiert werden.
Wenn eine Anforderung in Ihre Anwendung eingegeben wird, erfasst sails.js alle mit ihr gelieferten Parameter und stellt sie als params
für das Anforderungsobjekt zur Verfügung.
Eigenschaften im Routenzielobjekt werden an den Routenhandler im Objekt req.options übergeben. Die folgenden sind reservierte Eigenschaften, die das Verhalten des Routenhandlers beeinflussen können:
Eigentum | Anwendbare Zieltypen | Datentyp | Einzelheiten |
---|---|---|---|
überspringenAssets | alles | Boolean | Setzen Sie den Wert auf " true wenn die Route keine URLs mit Punkten enthalten soll (z. B. "myImage.jpg"). Dadurch werden Ihre Routen mit Platzhalter-Notation von übereinstimmenden URLs statischer Assets ferngehalten. Nützlich bei der Erstellung von URL-Slugs. |
überspringenRegex | alles | Regexp | Wenn das Überspringen aller URLs, die einen Punkt enthalten, zu tolerant ist oder Sie einen Handler für eine Route benötigen, der aufgrund verschiedener Kriterien vollständig übersprungen wird, können Sie skipRegex . Mit dieser Option können Sie einen regulären Ausdruck oder ein Array von regulären Ausdrücken angeben, mit denen die Anforderungs-URL übereinstimmt. Wenn einer der Übereinstimmungen erfolgreich ist, wird der Handler übersprungen. Beachten Sie, dass bei skipRegex im Gegensatz zur Syntax für das Binden eines skipRegex mit einem regulären Ausdruck _actual-RegExp-Objekte und keine Strings erwartet werden. |
Einheimische | Controller, Ansicht, Entwurf, Antwort | Wörterbuch | Legt die lokalen Standardvariablen fest, die an jede Ansicht übergeben werden, die während der Bearbeitung der Anforderung gerendert wird. |
Kors | alles | Wörterbuch oder Boolean oder String | Gibt an, wie Anforderungen für diese Route von einem anderen Ursprung verarbeitet werden sollen. |
bevölkern | Entwurf | Boolean | Gibt an, ob die Ergebnisse in einer Blueprint-Aktion "find" oder "findOne" zugeordnete Modellfelder enthalten sollen. Der Standardwert ist der in config/blueprints.js eingestellte Wert. |
überspringen , einschränken , sortieren , wo | Entwurf | Wörterbuch | Legen Sie die Kriterien für die Blaupause "Finden" fest. |
Benutzerdefinierte RESTful-Routendefinitionen
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',
};
Umleiten
module.exports.routes = { '/foo': '/bar', 'GET /google': 'http://www.google.com' };
Definieren Sie eine benutzerdefinierte Variable für alle Ansichten
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; }; }, };
Überspringen Sie Assets (URLs mit Punkten darin) von der Wildcard-Route
module.exports.routes = { 'GET /foo/*': { fn: function(req, res) { res.send("FOO!"); }, skipAssets: true }, };
Routen mit 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'
};
URL-Slugs
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',
};
Auf die in der URL übergebenen Parameter kann dann in den entsprechenden Controller-Aktionen mit req.param('year')
, req.param('month')
usw. req.param('month')
.
Beispielsweise löst eine GET
Anforderung an /blog/2016/08/
BlogController.showMonthArchive
/blog/2016/08/
die Controller-Aktion BlogController.showMonthArchive
, wobei req.param('year')
den Wert 2016
und req.param('month')
den Wert 08
.