当我尝试将GET方法发布到rest api时发生错误,但是在postman中它完美地工作。
public cartview() {
let localaccesstoken = localStorage.getItem('token');
let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
console.log(apiUrl);
return new Promise((resolve, reject) => {
console.log("test : "+apiUrl);
this.http.get(apiUrl)
.subscribe(res => {
console.log("w3cert Url : "+JSON.stringify(res));
console.log(resolve(res));
}, (err) => {
console.log('w3cert : '+reject(err));
});
});
在控制台日志中它显示一个api。我复制了那个api并贴在postman中,它正在工作,但是在应用程序中它显示了这个错误:
错误:“未捕获(承诺):[对象对象]”
将您的方法更改为以下内容:
public cartview() {
let localaccesstoken = localStorage.getItem('token');
let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
console.log(apiUrl);
return this.http.get(apiUrl).pipe(
tap(res => console.log(res))
).toPromise() <--- rxjs wraps the observable in a Promise for you
});
我认为上面的内容应该类似于服务方法。那么在您的组件中(或者您想要捕获承诺的地方),您可以调用.then()方法:
...cartview().then(res => console.log(res)).catch(err => console.error(err))
从上面的代码中,我可以看到你在observables / promises方面做得不好,而且,你自己也记录了resolve / reject方法,而不是结果。
我认为问题出在你调用你的cartview()
函数的地方你应该用它来调用它然后捕获两个:
cartview().then(res => {
console.log(res)
}).catch(err => {
console.error(err)
})