2017-05-31 18 views
7

Nie wiem jak zrobić wywołanie API do takiej metody:Kątowa, Http GET z parametrem?

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

Ponieważ jest GET, ale wciąż mam użyć, by przekazać, w jaki sposób to zrobić? Czy to będzie coś takiego?

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

Możliwy duplikat [Jak przekazywać argumenty URL (ciąg kwerendy) do żądania HTTP na kątowa 2] (https://stackoverflow.com/questions/ 34475523/how-to-pass-url-arguments-zapytanie-string-to-a-http-request-on-angle-2) – anoop

Odpowiedz

17

Mając coś takiego:

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

Oczywiście, dołączając każdą param trzeba params. Daje to o wiele większą elastyczność niż tylko używanie ciągu URL do przekazywania parametrów do żądania.

EDIT (28.09.2017): W Al-Mothafar stwierdził w komentarzu, search jest przestarzała jak kątowego 4, więc należy użyć params

EDIT (02.11.2017): Jeśli używasz nowa HttpClient istnieje obecnie HttpParams, które wyglądają i są używane tak:

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

a następnie dodaj params do wniosku, zasadniczo w ten sam sposób:

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

Więcej w docs dla HttpParams i HttpClient

+3

"search" jest przestarzałe pod kątem 4, zamiast tego użyj 'params' –

0

Zakładam, że korzystasz z usługi angular2. Można zadzwonić HTTP z params jak poniżej

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

jeśli spojrzysz na bardziej obiektowe rozwiązanie, możesz przyjrzeć się klasom RequestOptions i URLSearchParams – ip512