2017-11-06 2 views
1

Ich verstehe nicht warum, und ich finde die Antwort nirgendwo.HttpParams Frage Angular 4, schlechte params

Ich habe dieses Problem, wenn ich Parameter in HTTP-Anfrage verwenden möchte.

identificationClientMAil(phone: string, mail: string) : Observable <any>{ 
    let params = new HttpParams().append('phone', phone).append('mail', mail); 

    return this.http.get('http://localhost:8000/Programme/extranet-api/public', { headers: this.headers, params: params }) 
    .map(res => res.json()) 
    .catch(err => { 
     throw 'error in source. Details: ' + err; 
    }); 
    } 

Und meine URL wie folgt aussehen nach:

http://localhost:8000/Programme/extranet-api/public?updates=%7B%22param%22:%22phone%22,%22value%22:%22ddddddd%22,%22op%22:%22a%22%7D&updates=%7B%22param%22:%22mail%22,%22value%22:%22%22,%22op%22:%22a%22%7D&cloneFrom=%7B%22updates%22:null,%22cloneFrom%22:null,%22encoder%22:%7B%7D,%22map%22:null%7D&encoder=%7B%7D&map=null

Wo ist mein Problem?

+0

Wie wollen Sie die URL aussehen? – Alex

Antwort

1

Sie müssen URLSearchParams verwenden:

let params = new URLSearchParams(); 
urlSearchParams.append('phone', phone); 
urlSearchParams.append('mail', mail); 
return this.http.get('http://localhost:8000/Programme/extranet-api/public?' + urlSearchParams.toString(), { headers: this.headers }) 
.map(res => res.json()); 
.catch(err => { 
    throw 'error in source. Details: ' + err; 
}); 
1

Welche Frage haben Sie? Es kann auch ein Serverproblem sein (falscher Pfad zur Ressource oder anderes). Auf jeden Fall hatte Dhyey einen guten Vorschlag URLSearchParams verwenden, obwohl es eine bessere Idee ist es, die params Umwandlung zu lassen http.get behandeln (wie Sie in Ihrem Code hatte) wie:

return this.http.get('http://localhost:8000/Programme/extranet-api/public', 
     { headers: this.headers, search: myUrlSearchParams })...;