どのようにしてhttp getリクエストを行い、jsonオブジェクトを渡すことができますか
これは私のjson-Objectです
{{firstname:"Peter", lastname:"Test"}
このオブジェクトは、httpリクエストで渡して、一致した人物のリストを取得します。
どうして可能ですか?この例は、jsonの結果を持つ単純なgetリクエストを示しています。どのように変更する必要がありますか?
//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());
}
Http.get
メソッドは、2番目のパラメーターとして RequestOptionsArgs を実装するオブジェクトを受け取ります。
そのオブジェクトの検索フィールドを使用して、文字列または RLSearchParams オブジェクトを設定できます。
例:
// 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
);
JSONをパラメーターのリストにシリアル化する必要があります。
?firstname=peter&lastname=test
GET
リクエストには本文がないため、URLに追加します。
JSONをQueryParametersに変換する方法はいくつかあります。これらはこの質問で対処されています: jsonをurlパラメーターに変換するネイティブ関数はありますか?
好みの毒を選択できます。
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('&');
}
ただし、GET
リクエストは この回答 に基づくURL制限に従う必要があることに注意してください2000安全のための文字:
RFCによると8000
IE8とIE9は2083年まで
検索エンジンは2048のみを読み取ります
プレーンJSONを引数に変換する同じ方法で、РомаСкиданが提案するURLSearchParams
を使用できます。
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;
}
たぶんあなたはjsonオブジェクトを文字列化したい
var json = JSON.stringify(myObj);
this.http.get('url'+'?myobj='+encodeURIComponent(json))
POST
リクエストを使用して、サーバーにオブジェクトを渡します。
//SERVICE
getMatchedPersons(searchObj: any){
return this.http.post('url', JSON.stringify(searchObj))
.map(res => res.json());
}
その後、任意のJSオブジェクトを渡し、httpリクエストでサーバーに送信できます。
getMatchedPersons(searchObj: any){
this.httpService.getMatchedPersons(searchObj: any).subscribe(
data => this.persons = data,
error => alert(error);
);
);