Tüm http istekleri için temel API URL'sini ayarlamak üzere documentation yolunda bir yol bulamadım. Açısal HttpClient ile yapmak mümkün mü?Açısal HttpClient için baseUrl nasıl ayarlanır?
cevap
Bunu yapmak için varsayılan bir yol olmadığını düşünüyorum. HttpService ve içinde varsayılan URL'nizin özelliğini tanımlayabilir ve mülk URL'nizle http.get ve başkalarını aramanın yöntemlerini yapabilirsiniz. Sonra, HttpClient
Http hizmeti için yaptım, ama HttpClient biraz daha akıllı –
yerine HttpService'yi enjekte edin. Yeni HttpClient Interceptor kullanın. istediğiniz gibi HttpInterceptor isteği klonlamak ve değiştirebilirsiniz
import {Injectable} from '@angular/core';
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
@Injectable()
export class APIInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const apiReq = req.clone({ url: `your-api-url/${req.url}` });
return next.handle(apiReq);
}
}
, ben http isteklerinin tümü için varsayılan bir yolunu tanımlanan bu durumda:
HttpInterceptor
uygulayan uygun bir enjektabl oluşturun. aşağıdaki konfigürasyonlar ile HttpClientModule sağlayın: mutlaka bir temel URL gerekmez Şimdi
providers: [{
provide: HTTP_INTERCEPTORS,
useClass: APIInterceptor,
multi: true,
}
]
tüm istekleri your-api-url/
olduğunu umuyoruz Bu harika! Bir şey olsa da, burada Enjekte edilebilir dekoratör kullanmanıza gerek yoktur, sadece bir şey dekore edilmiş sınıf içine bir şey enjekte istediğinizde gereklidir. – BroiSatse
ile başlayacak HttpClient, Dokümanlar sadece isteğin api bölümünü belirtmeniz gerektiğini söylüyor, aynı sunucuya çağrı yapıyorsanız şu şekilde basittir:
this.http.get('/api/items').subscribe(data => { ...
Ancak, gerek ya, temel bir URL belirtmek istediğiniz eğer.
:
Bunu yapmak için 2 öneri var. Statik sınıf özelliği olan bir yardımcı sınıf.
export class HttpClientHelper{
static baseURL: string = 'http://localhost:8080/myApp';
}
this.http.get(`${HttpClientHelper.baseURL}/api/items`);//in your service class
. Bir sınıf özelliği olan bir taban sınıfı yüzden herhangi yeni hizmet uzatın olmalıdır:
export class BackendBaseService {
baseURL: string = 'http://localhost:8080/myApp';
constructor(){}
}
@Injectable()
export class ItemsService extends BackendBaseService{
constructor(private http: HttpClient){
super();
}
public listAll(): Observable<any>{
return this.http.get(`${this.baseURL}/api/items`);
}
}
- 1. Açısal 4 Hatası: HttpClient
- 2. Apache'yi kullanma httpclient http isteği için tanımlama bilgisi nasıl ayarlanır
- 3. ZF2 denetleyicisinde baseUrl nasıl edinilir?
- 4. Açısal veritabanın listesinin kapsamı nasıl ayarlanır?
- 5. httpclient
- 6. HttpClient?
- 7. HttpClient
- 8. HttpClient
- 9. httpclient
- 10. kor baseURL çoğaltılması
- 11. C# HttpClient Keep-Alive öğesi false olarak ayarlanır
- 12. HttpClient isteği için istek başlığı nasıl eklenir?
- 13. Httpclient isteği için özel başlık
- 14. HttpClient Kerberos'u nasıl kullanır?
- 15. Yapılandırma dosyası yerine iletici API kullanarak iletici (v1.4.0) baseUrl nasıl ayarlanır?
- 16. QPlainTextEdit için nasıl ayarlanır?
- 17. Yaz HttpClient
- 18. Oturumun Nasıl Yapılır HttpClient 4.1
- 19. açısal 2 daktilo FormBuilder nesnesine değerini nasıl ayarlanır
- 20. HttpClient kullanarak nasıl veri gönderilir?
- 21. Yeni HttpClient
- 22. JST HttpClient ile nasıl postalanır?
- 23. Android: HTTPClient
- 24. Nesne HttpClient
- 25. Eğik 4 - adını bulamıyor 'HttpClient'
- 26. ? Aşağıdakiler için "font" nasıl ayarlanır
- 27. AutoCompleteTextView için setOnClickListener nasıl ayarlanır?
- 28. UITableView için kenarlık nasıl ayarlanır?
- 29. Vim için sözdizimi nasıl ayarlanır?
- 30. Denetleyicide zamanlayıcı nasıl ayarlanır?
Sen https://angular.io/api/common/http (bir [önleme] yaratabilir/HttpInterceptor) url'yi istediğiniz herhangi bir temel ile güncelleyecektir. –
Bu vaka için interceptors kullanmak bir yük değil mi? –
Sadece bu evet değiştirmek isterseniz, olabilir. Başka bir seçenek de, temel yolun eklenmesi gibi gerekli tüm dönüşümleri yapacak basit bir getApiUrl() işlevine sahip olmaktır. –