sails支持两种类型的路由: custom(or "explicit") andautomatic(or "implicit").

先来看一下custom 即用户定义路由吧,以下是学习笔记。

用户定义路由

在config/routes.js中定义如下类似的路由:

module.exports.routes={

'get/signup': { view: 'conversion/signup' },

'post /signup':'AuthController.processSignup',

'get/login': { view: 'portal/login' },

'post /login':'AuthController.processLogin',

'/logout':'AuthController.logout',

'get /me':'UserController.profile'

}

有的将url指向某个controller的action,有的则将url指向某个view

甚至还可以在路由中指定view使用的layout

'get /privacy': {

view:'users/privacy',

locals: {

layout:'users'

}

},

语法规则:

1.每个路由都必须包含地址和目标

'GET /foo/bar':'FooController.bar'

^^^address^^^^^^^^^^target^^^^^^^

2.地址定义:

a.使用通配符和动态参数

比如:

'/user/foo/*'

'/user/foo/:name/bar/:age'

'/user/foo/*/bar/*'

b.正则表达式

"r||

list of param names>"

比如:

"r|^/\\d+/(\\w+)/(\\w+)$|foo,bar":"MessageController.myaction"

Will

match/123/abc/def, running themyactionaction ofMessageControllerand supplying the valuesabcanddefasreq.param('foo')andreq.param('bar')

c.路由地址匹配的顺序

按照routes.js中的书写顺序进行匹配,一旦匹配成功,便不会再往下继续寻找(有高级的方法可以改变该规则,但不推荐)

3.路由目标定义

a. controller/action的语法规则:

'GET /foo/go':'FooController.myGoAction',

'GET /foo/go':'Foo.myGoAction',

'GET /foo/go': {controller:"Foo", action:"myGoAction"},

'GET /foo/go': {controller:"FooController", action:"myGoAction"},

以上四种写法等价。

需要注意的是,controller和action的名字是大小写敏感的。

b.view目标的语法规则:

'GET /team': {view:'brochure/about'}

c. Blueprint目标的语法规则

'GET /findAllUsers': {model:'user', blueprint:'find'},

'GET /user/findAll': {blueprint:'find'}

'GET /user/findAll': {blueprint:'find', model:'pet'}

4.定义重定向(redirect)

'/alias' :'/some/other/route'

'GET /google':'http://www.google.com'

5.定义response

'/foo': {response:'notFound'}

6.function定义

路由可以直接指向某个function

'/foo':function(req, res) {res.send("FOO!");}

7.Policy target syntax

路由可以为target指定policy,即在达到指定target时,必须先通过某个policy

'/foo': [{policy:'myPolicy'}, {blueprint:'find', model:'user'}]

sails route(1) -用户定义路由的更多相关文章

  1. Flask之基于route装饰器的路由系统(源码阅读解析)

    一 路由系统 1. 在flask中配置URL和视图函数的路由时,首先需要在main.py中实例化一个app对象: from flask import Flask, render_template ap ...

  2. ASP.NET Web API实践系列04,通过Route等特性设置路由

    ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...

  3. 07:vue定义路由

    1.1 定义路由 1.说明 1. 路由是单页面应用程序(SPA)的关键,Vue提供过来路由插件,使用这个路由就要安装这个插件 2. 安装: npm install vue-router 3. 依赖于v ...

  4. 初学node.js-nodejs中实现用户登录路由

    经过前面几次的学习,已经可以做下小功能,今天要实现的事用户登录路由. 一.users_model.js  功能:定义用户对象模型 var mongoose=require('mongoose'), S ...

  5. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

  6. 应用C#和SQLCLR编写SQL Server用户定义函数

    摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割 ...

  7. SQL——用户定义函数

    根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别: (1) 返回值为可更新表的函数 若用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表也可更新,这样的函数称为内嵌 ...

  8. JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置

    前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...

  9. Sql server 浅谈用户定义表类型

    1.1 简介 SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的 ...

随机推荐

  1. ngx_lua模块学习示例之waf

    转自:http://www.tuicool.com/articles/FbQ3ymB WAF的主要功能为: ip黑白名单 url黑白名单 useragent黑白名单 referer黑白名单 常见web ...

  2. easyui_extension.js

    $.extend($.fn.datagrid.methods,{ /** * 开打提示功能 * * @param {} * jq * @param {} * params 提示消息框的样式 * @re ...

  3. 关于Unity的C#基础学习(二)

    一.Debug的使用 int a=3; Debug.Log("a="+a); 二.整数的定义 int m; Debug.Log(m);  //C#比C更严谨,没有初始化的变量打印出 ...

  4. 用 malloc 或 new 申请内存之后,应该立即检查指针值是否为 NULL

    用 malloc 或 new 申请内存之后,应该立即检查指针值是否为 NULL. 防止使用指针值为 NULL 的内存. #include <iostream> #include <s ...

  5. 敏捷软件开发实践-Code Review Process(转)

    介绍: 在敏捷软件开发中,从代码的产生速度上来看,要比 传统Waterfall产生速度高很多.因为我们把时间安排的更加紧凑了.那么这么多的代码,如何能保证这些代码质量呢?很多人可能直接想到静态代码检测 ...

  6. LoadRunner压力测试心得总结

    一.虚拟用户迭代一次的时间对整个压力场景的影响. 1.虚拟用户迭代一次的时间大于等于压力场景的上行周期. 此种情况,在压力场景的上行周期中,所有虚拟用户根据压力场景设置的策略全部依次运行.压力场景的上 ...

  7. python3----scrapy(笔记)

    import scrapy import sys # import io # sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb ...

  8. POJ 2567 Code the Tree &amp; POJ 2568 Decode the Tree Prufer序列

    题目大意:2567是给出一棵树,让你求出它的Prufer序列.2568时给出一个Prufer序列,求出这个树. 思路:首先要知道Prufer序列.对于随意一个无根树,每次去掉一个编号最小的叶子节点,并 ...

  9. 杂记之--苹果4s手机呼叫转移怎么设置

    您好,呼叫转移只需在拨号界面输入相应的代码就可以,无需其他设置无条件转移 **21*电话号码#再按拨号键 取消代码:##21# *#21# 再按拨号键无信号,关机转移 **62*电话号码#再按拨号键 ...

  10. IOS 程序内部切换语言 的一种方法

    本文转载至  http://www.cnblogs.com/wuyijibei/archive/2013/08/01/3230468.html 1: 首先, 所有的语言资源还是需要和现在的i18n方法 ...