路由到控制器

默认Sails会为每个在控制器中的action创建一个blueprint动作路由,所以一个GET请求到/:controllerIdentity/:nameOfAction将会触发一个动作。在上一小节的控制器例子中,控制器被保存到api/controllers/SayController.js,那么/say/hi/say/bye路由将会默认可用在Sails app运行起来的时候。如果控制器被保存到子文件夹/we下,那么路由将会是/we/say/hi/we/say/bye。更多细节查看blueprints文档

除了默认路由,Sails也允许使用config/routes.js文件让你手动绑定路由到控制器的动作。当你使用确切的路由的时候下面是一些参考:

  • 当你想要使用分开的动作来处理相同的路由路径,基于HTTP方法。上述提及的action blueprint路由为一条路径到一个给定的动作绑定所有的请求方法,包括GET, POST, PUT, DELETE等;
  • 当你想要一个动作在一个自定义的URL上可用(比如PUT /login, POST /signup或者一条”没有意义的URL“:GET /:username)
  • 当你想要为如何处理路由添加额外的选项的时候(例如特殊的CORS配置)

为了在config/routes.js文件中手工绑定一条路由到一个控制器中,你可以使用HTTP verb和路径(也就是路由地址)作为关键词,并且控制器的名称+.+动作名称作为值(也就是路由目标)。

比如,下面在api/controllers/SandwichController.js文件中手工添加的路由会在收到一条POST请求/make/a/sandwich的时候,让你的服务器触发makeIt()动作:

  'POST /make/a/sandwich': 'SandwichController.makeIt'

注意:

对于保存在子文件夹下的控制器,子文件应该也成为控制器识别信息的一部分:

  '/do/homework': 'stuff/things/HomeworkController.do'

api/controllers/stuff/things/HomeworkController.js文件中这条路由会在收到一条POST请求/do/homework的时候,让你的服务器触发do()动作。

一个完整的手工路由的讨论已经超出了这篇文档的范围--完整的可用选项概述请参考routes documentation

results matching ""

    No results matching ""