是否有可能在/ api下有sails.js API而不是/?

我已经使用以下命令创build了一个API:

$ sails generate api blog

哪些工作正常,但如果我想能够使用URL /blog提供使用Angular的前端HTML,我不能。

是否有可能将所有API移动到/api ,将静态文件和更多需要更多服务器端代码的路由放到Angular应用程序的path上,并将所有其他URLredirect到我的Angular应用程序,在那里我可以组织路由? 例如:

  1. 用户访问/blog ,这会导致Sails.js加载默认模板,该模板包含<script>标记中的Angular。

  2. Angular将URL读取为/blog ,因此将模板/templates/blog.html (静态文件)下载到“assets”文件夹中。

  3. 该模板包含来自/api请求,如/api/blog/page/1

这个问题的答案可以在这里find,但总的要点是:

find您的controllers.js (sails.js的旧版本)或blueprints.js (自0.10以来的sails.js版本),并将其加载到您的文本编辑器中,并向下滚动到下面的行(截至3月的默认文件中的第100行2015年):

// prefix: '',

取消注释该行,插入您想要的前缀URL,如下所示:

prefix: '/api',

确保URL最后没有正斜杠,否则访问/api/<blah>/<blah>将不起作用。

非常简单,你可以通过在config/blueprint.js设置一个蓝图前缀来实现。 像改变下面一行

 // prefix : '' 

 prefix: '/api' 

它会将这个前缀添加到每个蓝图API路线。 可能这对你来说已经足够了。 但是你可以select更好的调整。

假设你有一个X控制器和一个Y控制器。 你想使用前缀/apixX控制器,而/apiyY控制器。 那么你必须按照以下方式更换X控制器,

 module.exports = { _config: { prefix: '/apix' } } 

Y控制器按以下方式,

 module.exports = { _config: { prefix: '/apiy' } } 

总结一下,如果你想要所有的蓝图api以某种方式行事,然后改变config/blueprint.jsconfiguration,但是如果你想要某些特定的蓝图api以某种方式行事,那么将_config属性添加到该控制器的值将与蓝图组态。 它会覆盖全局configuration。