我正在尝试为我的所有角度2 http请求设置基本网址 . 以下是我的申请的基本设置 .
class HttpOptions extends BaseRequestOptions {
url:string = "http://10.7.18.21:8080/api/";
}
bootstrap(AppComponent, [
HTTP_PROVIDERS,
provide(RequestOptions, {useClass: HttpOptions})
]);
export class AppComponent {
users:Array<User>
constructor(private http: Http) {
http.get("/users")
.subscribe(res => this.users = res.json());
}
}
请求不会按照我的配置发送到http://10.7.18.21:8080/api/users . 而是将请求发送到http://localhost:8000/users .
How do I set base url for http request in angular 2 application?
我正在使用 Angular 2.0.0-beta.0 .
9 回答
For angular 4.3+ and @angular/common/http
拦截器很简单
app.module.ts
编辑:HttpClient和HttpInterceptor在Angular 4.3中引入
更新:请参阅Angular 4的@vegazz答案 .
对于Angular 2.2.1,以下内容应为web api base url的前缀,并表示较小的占用空间:
在app.module.ts中注入提供者:
用法示例:
它似乎涵盖了所有方法(GET,PUT,POST,......)
适用于Angular2版本2.2(2016年12月)
来自RC5的Angular标记
HTTP_PROVIDERS
已被弃用并试图将事情转移到@NgModule
,上述解决方案并不真正适用,因此作为其文档 . 我交叉了几个其他的答案,找到了实现基本网址的方法,希望这对其他人有帮助 .基本的想法是,我们将事情转移到
AppModule
,而不是在引导程序中执行操作 .app.module.ts
并将CustomRequestOptions移动到单独的可注入服务中
编辑GET以外的请求方法 .
如果您尝试发送GET以外的请求类型,则前一种方法无法将baseurl注入请求中 . 这是因为Angular2生成新的
RequestOptions
而不是this._defaultOptions
,其合并方法没有被我们的CustomRequestOptions覆盖 . (见这里的source code) .因此,我没有在CustomRequestOptions合并方法的最后一步返回
super.merge(...)
,而是生成了CustomRequestOptions
的新实例,以确保以下操作仍然有效 .这适用于POST,PUT,DELETE方法 . 希望这是有帮助的 .
在 Angular 2.0.0-beta.6 您可以通过覆盖'merge'来实现此目的
看了
BaseRequestOptions
,RequestOptions
和Http
类的代码源后:base_request_options.ts
http.ts
似乎
url
属性对应于默认URL,但不是URL的前缀 .为了实现你的用例,我建议在http对象前放一个服务然后注入服务 . 像这样的东西:
和
也就是说,这可能是Angular2本身的贡献;-)
希望它对你有帮助,蒂埃里
不同的方法:在开发中在localhost中运行应用程序时,请考虑配置代理 .
proxy.conf.json
更多:link
另见https://github.com/angular/angular/blob/1bec4f6c6135d7aaccec7492d70c36e1ceeaeefa/modules/angular2/test/router/path_location_strategy_spec.ts#L88
对于当前用户,这里是 angular 2.4.8 的真实工作示例
here是分割和链接 BaseCommonRequestOptions 和 CommonRequestOptions 的原因的代码 .
创建一个.ts文件
然后在app.module.ts中
添加提供商部分
然后在你的service.ts http调用必须如下例所示
/ api将替换为您的基本网址http://localhost:8080
更多细节http://shabeen.in/webschool/how-to-set-angular-2-service-http-base-url/