sails.js
маршрутизация
Поиск…
замечания
Маршруты - это правила, которые указывают Sails, что делать, когда сталкивается с входящим запросом.
Маршруты определяются в config/routes.js . Порядок маршрутов значителен, так как маршруты сопоставляются сверху вниз. Это означает, что если у вас есть определенный маршрут, который также может быть сопоставлен с помощью шаблона подстановочных знаков, конкретный маршрут должен быть определен выше маршрута подстановочного знака.
Когда запрос входит в ваше приложение, sails.js захватывает все параметры, которые пришли с ним, и делает их доступными для вас в качестве params объекта запроса.
Свойства в целевом объекте маршрута будут переданы обработчику маршрута в объекте req.options. Ниже перечислены зарезервированные свойства, которые могут повлиять на поведение обработчика маршрута:
| Имущество | Применимые типы целей | Тип данных | подробности |
|---|---|---|---|
| skipAssets | все | логический | Установите значение true если вы не хотите, чтобы маршрут соответствовал URL-адресам с точками в них (например, myImage.jpg). Это приведет к тому, что ваши маршруты будут обозначены символами шаблонов статических активов. Полезно при создании пулов URL. |
| skipRegex | все | Regexp | Если пропускать каждый URL, содержащий точку, является слишком разрешительным, или вам нужно, чтобы обработчик маршрута был пропущен на основе разных критериев целиком, вы можете использовать skipRegex . Эта опция позволяет вам указать регулярное выражение или массив регулярных выражений для соответствия URL-адресу запроса; если какое-либо из совпадений выполнено успешно, обработчик пропускается. Обратите внимание: в отличие от синтаксиса привязки обработчика с регулярным выражением, skipRegex ожидает _actual RegExp-объекты, а не строки. |
| местные жители | контроллер, представление, план, ответ | толковый словарь | Устанавливает локальные переменные по умолчанию для передачи в любое представление, которое отображается при обработке запроса. |
| CORS | все | Словарь или булевская или строка | Указывает, как обрабатывать запросы для этого маршрута из другого источника. |
| населять | план | логический | Указывает, должны ли результаты в проекте «find» или «findOne» иметь связанные поля модели. По умолчанию устанавливается значение, установленное в config/blueprints.js . |
| пропустить , ограничить , сортировать , где | план | толковый словарь | Установите критерии для схемы поиска. |
Пользовательские определения маршрута RESTful
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',
};
переадресовывать
module.exports.routes = {
'/foo': '/bar',
'GET /google': 'http://www.google.com'
};
Определение пользовательской переменной для всех представлений
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;
};
},
};
Пропустить активы (URL-адреса с точками в них) по шаблону
module.exports.routes = {
'GET /foo/*': {
fn: function(req, res) {
res.send("FOO!");
},
skipAssets: true
},
};
Маршруты с 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-адреса
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',
};
Затем параметры, переданные в URL-адресе, могут быть доступны в соответствующих действиях контроллера с использованием req.param('year') , req.param('month') и т. Д.
Например, GET запрос /blog/2016/08/ запускает BlogController.showMonthArchive действие контроллера с req.param('year') , имеющее значение 2016 и req.param('month') , имеющий значение 08 .