【问题标题】:How and where to define a default domain for my angular resource?如何以及在哪里为我的角度资源定义默认域?
【发布时间】:2015-08-02 00:24:16
【问题描述】:

我可以并且应该在哪里为我的角度资源定义一个默认 url,这样我就不必为我拥有的每个 api 端点提供一个绝对 url?

(我使用的 api 在同一个域中,但有一个子域:http://api.myapp.app/api/v1

我对 Angular 很陌生,我正在努力彻底理解,所以如果有人也能向我解释答案背后的“原因”,我将非常感激。

【问题讨论】:

  • api URL 会一直保持不变,还是永远不会改变?
  • 它可能会改变,但不会那么频繁,以至于我需要一个像下面建议的构建系统。对我来说,可以这么说,我只需将其设置在“应用程序配置”中的一个位置即可。

标签: angularjs api cross-domain angular-resource


【解决方案1】:

如果您使用像 grunt 这样的构建系统并且您的部署服务器会发生变化,我会查看 grunt-ng-constant

否则,您可以简单地在应用配置中定义一个常量,例如:

angular
    .module('app', [])
    .constant("ENV", {
        "ApiEndpoint": "somedomain.com"
    });

然后你可以像这样传递它:

angular.module('app').controller('SomeCtrl', function(ENV) {
    // ENV.ApiEndpoint
});

本身并不是真正的默认值,但至少您不需要在每个资源中手动输入您的基本域,您只需要引用 ENV.ApiEndpoint

【讨论】:

  • 谢谢马修。但这仍然意味着对于我的 api 工厂中的每个资源,我都必须预先添加这个常量?换一种说法;有没有办法让 ngResource 始终使用设置的域?
  • 我不知道,没有:(
【解决方案2】:

您可以在主 html 文件的头部使用它: <base href="/base-url">

如 angularjs 文档中所述 here ..向下滚动到 Relative Links

【讨论】:

  • 谢谢,我看到了,但我认为它可能会干扰其他内容
猜你喜欢
  • 2015-03-17
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 2014-03-05
相关资源
最近更新 更多