javascript - Angular 2'de POST isteklerinde temel URL'yi dinamik olarak değiştirme
Angular2/TypeScript uygulamamda, HTTP servislerinin konumundan habersiz olan Angular servislerim var - bu elbette gereklidir.
Test amaçları için, TypeScript uygulamamı birden fazla hedef ile çalıştırmam gerekiyor - bu ya localhost (test için) ya da bulut ortamı olabilir. Amaç, tüm isteğin bir adresten diğerine tek satırlık bir değişiklikle yönlendirilmesini sağlamaktır. Kabul edilebilir çözüm, hedef konumu tüm Angular servislerinde sabit değer olarak eklemeyi gerektirmemelidir.
Bunu nasıl yapacağınıza dair iyi bir örnek buldum: Angular 2 - HTTP isteklerinde (servislerde) kullanılacak temel URL'yi dinamik olarak bulma
Angular2'nin 2.0.0-beta.6 sürümü ile merge metodunu geçersiz kılabilirsiniz
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);
}
}
Bu sınıfı bu şekilde kaydedebilirsiniz:
bootstrap(AppComponent, [HTTP_PROVIDERS,
provide(BaseRequestOptions, { useClass: CustomRequestOptions })
]);
Ama
GET istekleri için çalışıyor, ancak POST istekleri için çalışmıyor - POST'taki temel URL değiştirilmedi (tarayıcı isteği gerekli HTTP hedefi yerine JavaScript sunucusuna gönderiyor).
Angular 2'de POST istekleri için temel URL adresi dinamik olarak nasıl değiştirilebilir?
Cevap #1
Bu şekilde dene
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;
}
}
ve
bootstrap(AppComponent, [HTTP_PROVIDERS,
// < RC.4
provide(RequestOptions, { useClass: CustomRequestOptions }),
// >= RC.4
{ provide: RequestOptions, useClass: CustomRequestOptions }
]);
