web-dev-qa-db-ja.com

Angular 2-Http Getリクエスト-JSONオブジェクトを渡す

どのようにして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());
  }
11
hamras

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 
 );
4
Roman Skydan

純粋なjavascriptの場合:

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のみを読み取ります

Angular2 URLSearchParamsを使用する

プレーン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;
 }
4
SparK

たぶんあなたはjsonオブジェクトを文字列化したい

var json = JSON.stringify(myObj);

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

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);
    );
); 
0
rinukkusu