是否可以在/ api下使用sails.js API而不是/?

时间:2015-05-10 16:35:12

标签: javascript node.js sails.js

我使用以下命令创建了一个API:

$ sails generate api blog

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

是否可以将所有API移至/api,将需要更多服务器端代码的静态文件和更多路由放置到Angular应用程序的路径上,并将所有其他URL重定向到我的Angular应用程序,其中I可以组织路由吗?例如:

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

  2. Angular将网址读取为/blog,因此请下载模板/templates/blog.html,即“资产”文件夹中的静态文件。

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

2 个答案:

答案 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控制器。您希望使用前缀/apixX控制器,但/apiyY控制器。然后你必须以下列方式更改X控制器,

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

Y控制器以下列方式,

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

总结是,如果您希望所有蓝图api以某种方式运行,然后更改config/blueprint.js中的配置,但如果您希望某些特定蓝图api以某种方式运行,则将_config属性添加到该控制器值其中与蓝图配置相同。它会覆盖全局配置。

相关问题