it-swarm.com.de

Angular 2 - HTTP Holen Sie sich die Anfrage - übergeben Sie json Object

Wie kann ich eine http-Anfrage bekommen und ein Json-Objekt übergeben

Das ist mein Json-Objekt

{{firstname:"Peter", lastname:"Test"}

und dieses Objekt möchte ich in der http-Anfrage übergeben, um eine Liste der übereinstimmenden Personen zu erhalten.

wie ist es möglich? Dieses Beispiel zeigt nur eine einfache Get-Anfrage mit einem Json-Ergebnis. Wie muss ich es ändern?

//Component:

person:Person;
persons:Person [];
....
//Whre can I pass the person, here in the service??
getMatchedPersons(){
  this.httpService.getMatchedPersons().subscribe(
     data =>  this.persons = data,
    error => aller(error)
    );
 ); 
  

  //SERVICE
  //pass parameters?? how to send the person object here?
  getMatchedPersons(){
    return this.http.get('url').map(res => res.json());
  }

9
hamras

Für reines Javascript:

Sie müssen Ihren Json mit einer Liste von Parametern serialisieren:

?firstname=peter&lastname=test

und hängen Sie es an die URL an, da GET-Anforderungen keinen Hauptteil haben.

Es gibt einige Möglichkeiten, JSON in QueryParameters .. zu konvertieren .. Sie werden in dieser Frage angesprochen: Gibt es eine native Funktion, um Json in URL-Parameter zu konvertieren?

Dort können Sie das Gift nach Ihrem Geschmack auswählen, mein war:

function obj_to_query(obj) {
    var parts = [];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            parts.Push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
        }
    }
    return "?" + parts.join('&');
}

Beachten Sie jedoch, dass GET-Anforderungen das URL-Limit einhalten müssen, das basierend auf diese Antwort empfohlen wird, um unter 2000 Zeichen zu bleiben, um sicher zu sein:

RFC sagt 8000
IE8 und IE9 reichen bis 2083
Suchmaschinen lesen nur bis 2048

Verwenden von Angular2 URLSearchParams

Mit der gleichen Methode zur Konvertierung eines einfachen JSON-Objekts in Argumente könnte URLSearchParams verwendet werden, wie von Рома Скидан vorgeschlagen:

 let params: URLSearchParams = objToSearchParams(obj);

 return this.http.get('url', {
   search: params
 }).subscribe(
   (response) => //some manipulation with response 
 );

 function objToSearchParams(obj): URLSearchParams{
    let params: URLSearchParams = new URLSearchParams();
    for (var key in obj) {
        if (obj.hasOwnProperty(key))
            params.set(key, obj[key]);
    }
    return params;
 }
5
SparK

Die Http.get-Methode verwendet ein Objekt, das RequestOptionsArgs als zweiten Parameter implementiert.

Das Suchfeld dieses Objekts kann verwendet werden, um einen String oder ein URLSearchParams - Objekt festzulegen.

Ein Beispiel:

 // Parameters obj-
 let params: URLSearchParams = new URLSearchParams();
 params.set('firstname', yourFirstNameData);
 params.set('lastname', yourLastNameData);

 //Http request-
 return this.http.get('url', {
   search: params
 }).subscribe(
   (response) => //some manipulation with response 
 );
3
Roman Skydan

Vielleicht möchten Sie das Json-Objekt stringifizieren

var json = JSON.stringify(myObj);

this.http.get('url'+'?myobj='+encodeURIComponent(json))
1

Verwenden Sie eine POST-Anforderung, um Objekte an den Server zu übergeben:

//SERVICE
getMatchedPersons(searchObj: any){
    return this.http.post('url', JSON.stringify(searchObj))
                    .map(res => res.json());
}

Anschließend können Sie das gewünschte JS-Objekt übergeben und in Ihrer http-Anforderung an den Server senden.

getMatchedPersons(searchObj: any){
    this.httpService.getMatchedPersons(searchObj: any).subscribe(
        data =>  this.persons = data,
        error => alert(error);
    );
); 
0
rinukkusu