我无法修复HTTP post客户端的.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 })
.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()

最新更新