Angular 2在post请求中动态更改基本URL

Sła*_*dek 15 javascript typescript angular

我在Angular2/TypeScript应用程序中有角度服务,它们不知道http服务的位置 - 显然需要什么.

出于测试目的,我需要运行具有多个目标的TypeScript应用程序 - 它可以是localhost(用于测试)或云环境.目标是通过源代码中的单行更改将所有请求从一个地址切换到另一个地址.可接受的解决方案不应要求在所有角度服务中将目标位置添加为常量值.

我找到了一个很好的例子如何做Angular 2 - 动态查找在http请求(服务)中使用的基本URL

使用Angular2的2.0.0-beta.6版本,您可以覆盖合并方法

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from 'angular2/http';

export class CustomRequestOptions extends BaseRequestOptions {
    merge(options?:RequestOptionsArgs):RequestOptions {
        options.url = 'http://192.123.24.2:8080' + options.url;
        return super.merge(options);
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以这样注册此课程:

bootstrap(AppComponent, [HTTP_PROVIDERS,
    provide(BaseRequestOptions, { useClass: CustomRequestOptions })
]);
Run Code Online (Sandbox Code Playgroud)

它适用于GET请求,但不适用于POST请求 - POST中的基本URL未被触及(浏览器将请求发送到JavaScript主机服务器而不是所需的http目标).

如何在Angular 2中动态更改POST请求的基本URL地址?

Luc*_*uca 5

试试这种方式

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from 'angular2/http';

export class CustomRequestOptions extends BaseRequestOptions {
    merge(options?:RequestOptionsArgs):RequestOptions {
        options.url = 'http://192.123.24.2:8080' + options.url;
        var result = super.merge(options);
        result.merge = this.merge;
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

bootstrap(AppComponent, [HTTP_PROVIDERS,
    // < RC.4
    provide(RequestOptions, { useClass: CustomRequestOptions }),
    // >= RC.4
    { provide: RequestOptions, useClass: CustomRequestOptions }
]);
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3296 次

最近记录:

9 年,3 月 前