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});