web-dev-qa-db-fra.com

Angulaire, Http GET avec paramètre?

Je ne sais pas comment faire un appel API à une telle méthode:

[HttpGet]
[ActionName("GetSupport")]
public HttpResponseMessage GetSupport(int projectid)

Parce qu'il s'agit de GET mais que vous avez toujours un paramètre à passer, comment faire cela?

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 })
18
user8090896

Avoir quelque chose comme ça:

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

Bien sûr, ajoutez tous les paramètres dont vous avez besoin pour params. Cela vous donne beaucoup plus de flexibilité que de simplement utiliser une chaîne d'URL pour transmettre des paramètres à la requête.

EDIT (28.09.2017): Comme Al-Mothafar a déclaré dans un commentaire, search est obsolète à partir de Angular 4, vous devez donc utiliser params

EDIT (02.11.2017): Si vous utilisez la nouvelle HttpClient, il existe maintenant HttpParams, qui ressemblent et sont utilisés comme suit:

let params = new HttpParams().set("paramName",paramValue).set("paramName2", paramValue2); //Create new HttpParams

Et ajoutez ensuite les paramètres à la demande, essentiellement, de la même manière:

this.http.get(url, {headers: headers, params: params}); 
//No need to use .map(res => res.json()) anymore

Plus dans les docs pour HttpParams et HttpClient

49
DGarvanski

Je suppose que vous utilisez un service angular2. Vous pouvez appeler HTTP avec les paramètres comme ci-dessous 

import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()

export class MockService {
    constructor(public http: Http) {
  }

 getFakeUser(pageNumber) {
    let URL = "https://randomuser.me/api/?page=" + pageNumber + 
        "&results=10&inc=name,gender,nat,picture&noinfo";
    return new Promise((resolve, reject) => {
      this.http.get(URL)
          .map(res => res.json())
          .subscribe(data => {
              // console.log(data)
             resolve(data);
           }, (error => {
              reject(error);
            }));
         });
        }
    }
0
Anjum....