我正在尝试使用angular 2实现应用,并且需要向我的API服务器发出请求。但是,我认为在每个请求中对完整URL进行硬编码是一个坏主意,因为它很可能会发生变化。我看了看这篇文章: Set base url for angular 2 http requests
但适用于测试版。我正在使用RC6而无法使其工作。任何帮助将不胜感激。
答案 0 :(得分:1)
如果在提供客户端代码的同一服务器上运行json后端,则无需在url中指定端口。对于其他url settins(就像我在/ api /下的所有服务)我使用一个单独的帮助类来处理所有配置等等,这个有/ api / hardcoded,但它只在那个地方。可以手动或在构建过程中轻松更改。
班级可以是这样的:
erb
答案 1 :(得分:0)
如果您使用Gulp等构建工具构建角度应用程序,则可以在构建时控制应用程序的基本URL。它不允许您在运行时切换基本URL,但它允许您使用单个命令构建指向本地计算机或服务器的应用程序。
gulpfile.js:
var gulpUtil = require('gulp-util');
var gulpData = require('gulp-data');
var gulpTemplate = require('gulp-template');
var sourceDir = 'path/to/src';
var buildDir = 'path/to/build/target';
gulp.task('default', [],
function() {
return gulp.src(sourceDir + 'index.html')
.pipe(gulpData(function() {
return {
baseUrl : gulpUtil.env.baseUrl
};
}))
.pipe(gulpTemplate())
.pipe(gulp.dest(buildDir));
});
然后在index.html中:
<script>
angular.module('myApp', [])
.provider('appConfigProvider', function () {
return {
$get: function () {
return {
baseUrl: '<%= baseUrl %>'
};
}
};
});
</script>
然后当你运行gulp时,提供baseUrl作为命令行参数:
gulp --baseUrl https://my.server.com
这设置了gulpUtil.env中可用的环境变量;您也可以通过道具文件和gulp-props提供配置(虽然我还没有使用它)。通过单个命令配置角度应用程序是Gulp等任务管理员最喜欢的用途之一。
祝你好运!