public postForObjecty(endpoint: any, data: any) {
return new Promise((resolve, reject) => {
let url = this.createBasicUrl(endpoint);
let _data = this.arrangeData(data);
let headers: any = new Headers()
let token = `Bearer ${RestProvider.BEARER_TOKEN}`;
headers.append('Authorization', token);
this.http.post(url, _data, { headers: headers })
.map((res: { json: () => any; }) => res.json())
.subscribe((data: unknown) => {
resolve(data);
}, (err: any) => {
reject(err);
});
});
}
我想张贴和获取方法后端,但我不能修复这个代码
.map
这个行不通,
如果我能修复这个。map方法,它就会完成
您希望使用RxJS的map
方法。为此,您需要像这样.pipe
可观察流:
public postForObjecty(endpoint: any, data: any) {
return new Promise((resolve, reject) => {
let url = this.createBasicUrl(endpoint);
let _data = this.arrangeData(data);
let headers: any = new Headers()
let token = `Bearer ${RestProvider.BEARER_TOKEN}`;
headers.append('Authorization', token);
this.http.post(url, _data, { headers: headers })
.pipe(map((res: { json: () => any; }) => res.json()))
.subscribe((data: unknown) => {
resolve(data);
}, (err: any) => {
reject(err);
});
});
}
默认情况下,Angular的HttpClient
会帮你处理JSON响应。假设您正在使用此服务,这意味着这里的map
是不必要的,可以完全删除。
public postForObjecty(endpoint: any, data: any) {
return new Promise((resolve, reject) => {
let url = this.createBasicUrl(endpoint);
let _data = this.arrangeData(data);
let headers: any = new Headers()
let token = `Bearer ${RestProvider.BEARER_TOKEN}`;
headers.append('Authorization', token);
this.http.post(url, _data, { headers: headers })
.subscribe((data: unknown) => {
resolve(data);
}, (err: any) => {
reject(err);
});
});
}
如果您确实需要完整的响应,例如HTTP状态码,您可以将observe: 'response'
传递给post
函数接受的options
对象。Angular文档对此有很详细的介绍。
作为一个参考,在旧版本的Angular中,有一个现在已经弃用的服务叫做Http
,你需要一直调用.json()
。