typescript - Angular, Http GET cu parametru?
Nu știu cum să fac un apel API la o astfel de metodă:
[HttpGet]
[ActionName("GetSupport")]
public HttpResponseMessage GetSupport(int projectid)
Pentru că este GET, dar tot trebuie să transmit un parametru, cum să fac asta? Ar fi ceva de genul acesta?
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('projectid', this.id);
this.http.get('http://localhost:63203/api/CallCenter/GetSupport', { headers: headers })
Răspuns #1
A avea ceva de genul acesta:
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('projectid', this.id);
let params = new URLSearchParams();
params.append("someParamKey", this.someParamValue)
this.http.get('http://localhost:63203/api/CallCenter/GetSupport', { headers: headers, search: params })
Desigur, atașând fiecare parametru de care ai nevoie la params. Îți oferă mult mai multă flexibilitate decât să folosești doar un șir URL pentru a transmite parametrii cererii.
EDIT(28.09.2017): Așa cum a afirmat Al-Mothafar într-un comentariu, search este depreciat începând cu Angular 4, așa că ar trebui să folosești params
EDIT(02.11.2017): Dacă folosești noul HttpClient, există acum HttpParams, care arată așa și sunt folosite astfel:
let params = new HttpParams().set("paramName",paramValue).set("paramName2", paramValue2); //Create new HttpParams
Și apoi adaugă parametrii la cerere, practic, în același mod:
this.http.get(url, {headers: headers, params: params});
//No need to use .map(res => res.json()) anymore
Mai multe în documentația pentru HttpParams și HttpClient
Răspunsul #2
Pentru Angular 9+ puteți adăuga antete și parametri direct fără noțiunea de cheie-valoare:
const headers = new HttpHeaders().append('header', 'value');
const params = new HttpParams().append('param', 'value');
this.http.get('url', {headers, params});
