Tworzę żądanie HTTP w Angular, ale nie wiem, jak dodać do niego argumenty URL (ciąg zapytania).
this.http.get(StaticSettings.BASE_URL).subscribe(
(response) => this.onGetForecastResult(response.json()),
(error) => this.onGetForecastError(error.json()),
() => this.onGetForecastComplete()
);
Teraz moje StaticSettings.BASE_URL jest czymś w rodzaju adresu URL bez ciągu zapytania, takiego jak: http://atsomeplace.com/, ale chcę, aby to był http://atsomeplace.com/?var1=val1&var2=val2
Gdzie var1 i var2 pasują do mojego obiektu żądania HTTP? Chcę dodać je jak obiekt.
{
query: {
var1: val1,
var2: val2
}
}
a następnie tylko moduł Http wykonuje zadanie, aby przeanalizować go w ciągu zapytania adresu URL.
http
angular
typescript
Miguel Lattuada
źródło
źródło
Odpowiedzi:
W httpclient metody pozwalają ustawić params w jego opcji.
Możesz go skonfigurować, importując HttpClientModule z pakietu @ angular / common / http.
Następnie możesz wstrzyknąć HttpClient i użyć go do wykonania żądania.
W przypadku wersji kątowych przed wersją 4 możesz zrobić to samo za pomocą usługi HTTP .
Metoda Http.get pobiera obiekt, który implementuje RequestOptionsArgs jako drugi parametr.
Pola wyszukiwania tego obiektu można użyć do ustawienia ciągu lub obiektu URLSearchParams .
Przykład:
Dokumentacja dla klasy Http zawiera więcej szczegółów. Można go znaleźć tutaj, a działający przykład tutaj .
źródło
http.get(url, {params: {var1: val1, var2: val2}})
search
właściwość została obniżona z 4.0.0 -> użyjparams
zamiastEdytuj kątowy> = 4.3.x
HttpClient został wprowadzony wraz z HttpParams . Poniżej przykład użycia:
(Stare odpowiedzi)
Edytuj kątowy> = 4.x
requestOptions.search
został wycofany.requestOptions.params
Zamiast tego użyj :Oryginalna odpowiedź (Angular 2)
Musisz zaimportować
URLSearchParams
jak poniżejNastępnie skompiluj parametry i wprowadź żądanie HTTP w następujący sposób:
źródło
RequestOptions
. Zaktualizowałem swoją odpowiedź.search
. Naprawiono mój problemsearch
nieruchomości.Wersja 5+
Przy Angular 5 i wyższych nie musisz używać HttpParams . Możesz bezpośrednio wysłać obiekt json, jak pokazano poniżej.
Należy pamiętać, że wartości danych powinny być ciągiem, tzn.
{ params: {limit: "2"}}
Wersja 4.3.x +
Użyj HttpParams, HttpClient z @ angular / common / http
Może trochę pomóc!
źródło
JSON.stringify()
Kątowy 6
Możesz przekazać parametry potrzebne do otrzymania połączenia za pomocą params:
gdzie x = {właściwość: „123”}.
Jeśli chodzi o funkcję API rejestrującą „123”:
źródło
Mój przykład
Moja metoda
w moim komponencie
Listonoszem
źródło
W najnowszej wersji Angular 7/8 możesz zastosować najprostsze podejście: -
źródło
searchParams
właściwości nie będziestring
wartością.Jeśli planujesz wysłać więcej niż jeden parametr.
Składnik
Usługa
I kontynuuj swoje żądanie HTTP, tak jak @ethemsulan.
Trasa po stronie serwera
źródło
Możesz użyć HttpParams z @ angular / common / http i przekazać ciąg z zapytaniem. Na przykład:
Teraz w twoim kodzie
I to działa dla ciebie :)
Mam nadzieję, że ci pomogę
źródło
pod warunkiem, że zainstalowałeś jQuery , robię to
npm i jquery --save
i włączamapps.scripts
wangular-cli.json
źródło
źródło
Możesz użyć parametrów adresu URL z oficjalnej dokumentacji.
Przykład:
this.httpClient.get(this.API, { params: new HttpParams().set('noCover', noCover) })
źródło