2017-12-18 8 views
0

私はかなり重要なことにIonicやAngularを使っています。だからチートシートとして私はイオンスーパースターターのテンプレート(下のリンク)を使用しています。 私は私のAPIにGETリクエストを作成しようとしていますし、それは私がこのようにそれをやっている場合は見つけるだけで動作します:HttpClientはGETリクエストにパラメータオブジェクトを追加します

this.api.get('user/'+this.user.userId+'/entries?include=stuff&access_token=TOKEN'); 

を私はオブジェクトへのURLのparamsを置くとき、それは作業を停止します

let options = { 
    'include':'stuff', 
    'access_token':'TOKEN' 
} 
this.api.get('user/'+this.user.userId+'/entries', options); 

アクセストークンを含むオプションオブジェクトがURLに追加されていないため、唯一のエラーは「不正なリクエスト」です。

イオンスーパースターターテンプレート私のparamsオブジェクト内の各キーの providers/api/api.ts通話 .set()


if (params) { 
    reqOpts.params = new HttpParams(); 
    for (let k in params) { 
    reqOpts.params.set(k, params[k]); 
    } 
} 

が、角度の大学によると、これはHTTPParamsは不変である」ので、可能ではありません" これを行うことが本当に間違っていた場合、私はそれがイオンテンプレートに含まれるとは考えていません。私はこの問題を遭遇した最初の人物ではないと私は信じています。

しかし、私はここに詰め込まれているので、どんな助けにも感謝します。



角度大学へのリンク: https://blog.angular-university.io/angular-http/#httprequestparameters

イオンスーパースターターへのリンク: https://github.com/ionic-team/starters/tree/master/ionic-angular/official/super

+0

検索パラメータは、オプション全体の* part *である必要があります。 paramsを追加することができます。不変性とは、古いものと別のparamsをセットして新しいオブジェクトを返すことを意味します。 – jonrsharpe

+0

ここで誤解されているのは確かですが、src/providers/api/api.tsに定義されているAPIクラスがparams-objectをとり、新しいHttpParamsインスタンスを作成し、各パラメータをreqOpts.paramsに追加します。 reqOptsオブジェクト全体をhttp.get(endpoint、reqOpts)に渡します。だから、私の最初のパラメータは渡されたreqOptsの一部であり、その全体ではありません。いいえ? – yardarrat

答えて

0

私はそれを考え出した自分自身を考える:

もし私が書き込み(私のsrc/providers/api/api.ts

代わりに、それが動作

reqOpts.params.set(k, params[k]); 

reqOpts.params = reqOpts.params.append(k, params[k]); 

私はあなたのようなオブジェクトを入れ子になったかもしれないよとあなたは、ループバックAPIを使用している場合:これは動作しません

let options = { 
    "filter": { 
    "order": "date DESC" 
    }, 
    "access_token":this.user._accessToken 
}; 

。代わりにお試しください:

let options = { 
    "filter": '{"order":"date DESC"}', 
    "access_token":this.user._accessToken 
}; 
関連する問題