我正在构建一个Angularjs Web应用程序书籍我想你可以说。我跟随John Papa Angular Styleguide,到目前为止事情进展顺利。我现在需要将所有RESTful主机URL保存在某种JSON格式的配置文件中。这些主机端点经常根据客户端或AWS机器的更改而变化,因此将所有URL保存在一个位置可能有利于易于更改。
目前在我的应用程序中处理REST调用的javascript文件中,设置如下:
function ModelViewService($http, $q, exception, logger) {
var HOST = 'http://xxxxxxxxxxxxxxxxxx.amazonaws.com';
var MODULE = '/modelview/service/rest';
...
然后在调用某些数据时,例如它看起来像这样:
function getGroups() {
return $http.get(HOST + MODULE + '/group/retrieveAll')
.then(success)
.catch(fail);
...
然后我有其他文件具有不同的服务和不同的主机,所以我基本上想把JSON对象放在一个看起来像这样的地方:
{
'modelviewservice': {
'HOST': 'http://xxxxxxxxxxxxxxxxxx.amazonaws.com',
'MODULE': '/modelview/service/rest'
},
... //other service
}
然后在javascript文件中执行$http.get(config.modelviewservice.host + config.modelviewservice.MODULE + '/group/retrieveAll')
。
我不知道实现这一目标的最佳方法,并遵循角度风格指南。我找到了一个名为requre.js
的东西,它显然会通过类似config.json
的{{1}}将var config = require('config.json')('./config.json');
文件注入到config.json
npm模块中,./config.json
第二个User
指的是我的本地配置JSON文件。这似乎是一个很好的解决方案,但由于我无法让它工作,所以让我第二次猜测是否有更简单或更合适的方法来做到这一点。
答案 0 :(得分:2)
嗯,这就是我如何使我的端点组织起来的。将常量添加到应用程序的主模块。
(function() {
'use strict';
angular
.module('apiConstant', [])
.constant('apiConstant', constant());
function constant() {
return {
HOST: 'http://xxxxxxxxxxxxxxxxxx.amazonaws.com',
modules: {
MODULE_1: '/modelview/service/rest',
MODULE_2: '/modelview/factory/rest',
MODULE_3: '/modelview/sample/rest'
},
endpoints: {
GET_GROUPS: '/group/retrieveAll',
GET_USERS: '/users/retrieveAll',
POST_GROUP: '/group/add'
}
};
}
})();
然后在您的服务中
function ModelViewService($http, $q, exception, logger, apiConstant) {
var HOST = apiConstant.HOST;
var MODULE = apiConstant.modules.MODULE_1;
...
function getGroups() {
return $http.get(HOST + MODULE + apiConstant.endpoints.GET_GROUPS)
.then(success)
.catch(fail);
...