我很喜歡使用Ionic或Angular的noob。所以作爲備忘單,我使用了離子超啓動模板(下面的鏈接)。 我試圖做一個GET請求我的API和它的作品只是覺得如果我做這樣的:HttpClient追加參數對象GET請求
this.api.get('user/'+this.user.userId+'/entries?include=stuff&access_token=TOKEN');
,但是當我把網址參數到一個對象時,它停止工作:
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
搜索參數應該是選項的*部分*,而不是整個選項。你可以添加params,不變性只意味着這樣做會返回一個新的對象,並設置舊的和額外的參數,而不是在原地進行變異。 – jonrsharpe
不知道我在這裏弄錯了,但是:在src/providers/api/api.ts中定義的API類需要我的params對象,創建一個新的HttpParams實例並將每個參數附加到reqOpts.params。然後它將整個reqOpts對象傳遞給http.get(endpoint,reqOpts)。所以我的初始參數只是傳遞的請求的一部分,而不是整個的。沒有? – yardarrat