是否有可能在/ api下有sails.js API而不是/?
我已经使用以下命令创build了一个API:
$ sails generate api blog
哪些工作正常,但如果我想能够使用URL /blog
提供使用Angular的前端HTML,我不能。
是否有可能将所有API移动到/api
,将静态文件和更多需要更多服务器端代码的路由放到Angular应用程序的path上,并将所有其他URLredirect到我的Angular应用程序,在那里我可以组织路由? 例如:
-
用户访问
/blog
,这会导致Sails.js加载默认模板,该模板包含<script>
标记中的Angular。 -
Angular将URL读取为
/blog
,因此将模板/templates/blog.html
(静态文件)下载到“assets”文件夹中。 -
该模板包含来自
/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
控制器。 你想使用前缀/apix
到X
控制器,而/apiy
到Y
控制器。 那么你必须按照以下方式更换X
控制器,
module.exports = { _config: { prefix: '/apix' } }
和Y
控制器按以下方式,
module.exports = { _config: { prefix: '/apiy' } }
总结一下,如果你想要所有的蓝图api以某种方式行事,然后改变config/blueprint.js
configuration,但是如果你想要某些特定的蓝图api以某种方式行事,那么将_config
属性添加到该控制器的值将与蓝图组态。 它会覆盖全局configuration。