2017-05-31 16 views
7

Tôi không biết làm thế nào để thực hiện cuộc gọi API đến một phương pháp như:Góc, TẢI GET với tham số?

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

Bởi vì nó là GET nhưng vẫn có một tham số để vượt qua, làm thế nào để làm điều này? Nó sẽ là một cái gì đó như thế này?

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

trùng lặp có thể xảy ra của [Làm thế nào để vượt qua đối số url (chuỗi truy vấn) để yêu cầu HTTP trên góc 2] (https://stackoverflow.com/questions/ 34475523/how-to-pass-url-argument-query-string-to-a-http-request-on-angular-2) – anoop

Trả lời

17

Có một cái gì đó như thế này:

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

Tất nhiên, phụ thêm mỗi param bạn cần phải params. Nó mang lại cho bạn sự linh hoạt hơn rất nhiều so với việc chỉ sử dụng chuỗi URL để chuyển các tham số cho yêu cầu.

EDIT (2017/09/28): Như Al-Mothafar tuyên bố trong một chú thích, search bị phản đối như các góc 4, vì vậy bạn nên sử dụng params

EDIT (2017/11/02): Nếu bạn đang sử dụng mới HttpClient hiện nay có HttpParams, mà nhìn và được sử dụng như thế này:

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

và sau đó thêm các params để yêu cầu ở, về cơ bản, cùng một cách:

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

thêm thông tin trong tài liệu cho HttpParamsHttpClient

+3

'tìm kiếm' không được dùng cho góc 4, sử dụng' params' để thay thế –

0

Tôi giả sử bạn đang sử dụng một số dịch vụ angular2. Bạn có thể gọi HTTP với params như dưới đây

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

nếu bạn nhìn vào một giải pháp hướng đối tượng hơn, bạn có thể xem các lớp RequestOptions và URLSearchParams – ip512

Các vấn đề liên quan