【问题标题】:Is it possible to have sails.js APIs under /api rather than /?是否可以在 /api 而不是 / 下拥有sails.js API?
【发布时间】:2015-05-10 16:35:12
【问题描述】:

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

$ sails generate api blog

这很好用,但如果我希望能够使用 URL /blog 来使用 Angular 提供前端 HTML,我不能。

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

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

  2. Angular 将 URL 读取为 /blog,因此下载模板 /templates/blog.html,这是“assets”文件夹中的一个静态文件。

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

【问题讨论】:

  • 发现了一个类似的问题,[salisjs中的全局路由前缀][1][1]:stackoverflow.com/questions/19665272/…
  • 谢谢,我去看看,@Nindaff
  • 没有'config/controllers.js'文件@Nindaff,也许它被删除了?
  • 是的,我不知道你使用的是什么版本,但我猜你想签出 0.10 或更高版本,config/blueprints.js
  • @Nindaff 我正在使用npm install -g sails 安装生成器,那为什么会是旧版本?

标签: javascript node.js sails.js


【解决方案1】:

这个问题的答案可以在here找到,但大体是:

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

     // prefix: '',

取消注释该行,在其中插入所需的前缀 URL,如下所示:

     prefix: '/api',

确保网址末尾没有正斜杠,否则无法访问/api/<blah>/<blah>

【讨论】:

    【解决方案2】:

    您可以通过在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 属性添加到该控制器值,其值为与蓝图配置相同。它将覆盖全局配置。

    【讨论】:

    • 谢谢,但这似乎是冗长的,所以我坚持上面的答案。如果您希望您的 API 出现在每个 API 的不同前缀下,那么这就是这样做的方法,但总的来说,另一种方法可以很好地完成工作。
    猜你喜欢
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多