我使用以下命令创建了一个API:
$ sails generate api blog
哪个工作正常,但如果我想使用URL /blog
来使用Angular提供前端HTML,我就不能。
是否可以将所有API移至/api
,将需要更多服务器端代码的静态文件和更多路由放置到Angular应用程序的路径上,并将所有其他URL重定向到我的Angular应用程序,其中I可以组织路由吗?例如:
用户访问/blog
,这会导致Sails.js加载默认模板,其中包含<script>
标记中的Angular。
Angular将网址读取为/blog
,因此请下载模板/templates/blog.html
,即“资产”文件夹中的静态文件。
该模板包含/api
的请求,例如/api/blog/page/1
。
答案 0 :(得分:2)
这个问题的答案可以找到here,但一般的要点是:
找到你的controllers.js
(旧版本的sails.js)或blueprints.js
(自0.10以来的sails.js版本)并将其加载到文本编辑器中并向下滚动到以下行(第100行)截至2015年3月的默认文件中):
// prefix: '',
取消注释该行,插入所需的前缀网址,如下所示:
prefix: '/api',
确保URL最后没有正斜杠,否则访问/api/<blah>/<blah>
将无效。
答案 1 :(得分:0)
很简单,您可以通过在config/blueprint.js
设置蓝图前缀来实现。比如改变以下行
// prefix : ''
到
prefix: '/api'
它会将此前缀添加到每个蓝图api路由中。可能这对你来说已经足够了。但是你可以选择更细微的调整。
假设您有一个X
控制器和一个Y
控制器。您希望使用前缀/apix
到X
控制器,但/apiy
到Y
控制器。然后你必须以下列方式更改X
控制器,
module.exports = {
_config: {
prefix: '/apix'
}
}
和Y
控制器以下列方式,
module.exports = {
_config: {
prefix: '/apiy'
}
}
总结是,如果您希望所有蓝图api以某种方式运行,然后更改config/blueprint.js
中的配置,但如果您希望某些特定蓝图api以某种方式运行,则将_config
属性添加到该控制器值其中与蓝图配置相同。它会覆盖全局配置。