angular 5 httpclient ,在 post 上,响应没有 return headers,只有 return 响应 object
angular 5 httpclient , on post , the response does not return headers, only returns response object
我最近搬到了 angular 5 之前 http.post 是 returning 响应 objecta s complete with headers 但是使用 httpclient ,它不会 return 响应 headers。我如何更改 post 代码的这一部分以提供完整的响应 object 包括响应 headers
我读到有关使用 {observable: "response"} 的信息,但它不起作用
post(inURL, data, config = undefined) {
let headers, options;
if (config) {
options = config;
} else {
//headers = this.getDefaultHeader();
//options = new RequestOptions({ headers: headers });
options = httpOptions;
}
let action = this.httpService.post(inURL, data, options);
return new Promise((resolve, reject) => {
action.subscribe(
response => resolve(response),
error => {
this.interceptError(error);
reject(error);
}
);
});
}
我假设您有充分的理由 return promise
而不是此处的 Observable。
话虽这么说,你让这里的事情复杂化了。您可以简单地在 post
.
的 return 值上调用 toPromise()
好吧,你说你使用了 {observable: "response"}
但它没有用。那是因为你没有正确使用它。 应该是 {observe: "response"}
而不是 {observable: "response"}
它必须是选项的一部分。所以我使用了扩展运算符 (...
) 并将 {observe: "response"}
添加到 options
.
试一试:
post(inURL, data, config = undefined) {
let headers, options;
if (config) {
options = config;
} else {
//headers = this.getDefaultHeader();
//options = new RequestOptions({ headers: headers });
options = httpOptions;
}
options = { ...options, observe: 'response' };
this.httpService.post(inURL, data, options)
.toPromise();
}
您可以在进行 HTTP 调用后 return HttpClient 响应:
getServiceData(): Observable<any>{
return this.httpClient
.post(myUrl, requestBodyObj)
.map((httpResponse: any) => {
if (httpResponse.operationStatus.statusCode === '0') {
return httpResponse.data;
} else {
throw new Error('error in service call');
}
})
}
在你的组件中class你可以订阅服务方法:
myService.subscribe( (data) => {
// do something with data received
}, error => {
// do something when error
})
有关 HttpClient 用法的更多详细信息,请参阅 seen here 官方指南
我最近搬到了 angular 5 之前 http.post 是 returning 响应 objecta s complete with headers 但是使用 httpclient ,它不会 return 响应 headers。我如何更改 post 代码的这一部分以提供完整的响应 object 包括响应 headers
我读到有关使用 {observable: "response"} 的信息,但它不起作用
post(inURL, data, config = undefined) {
let headers, options;
if (config) {
options = config;
} else {
//headers = this.getDefaultHeader();
//options = new RequestOptions({ headers: headers });
options = httpOptions;
}
let action = this.httpService.post(inURL, data, options);
return new Promise((resolve, reject) => {
action.subscribe(
response => resolve(response),
error => {
this.interceptError(error);
reject(error);
}
);
});
}
我假设您有充分的理由 return promise
而不是此处的 Observable。
话虽这么说,你让这里的事情复杂化了。您可以简单地在 post
.
toPromise()
好吧,你说你使用了 {observable: "response"}
但它没有用。那是因为你没有正确使用它。 应该是 {observe: "response"}
而不是 {observable: "response"}
它必须是选项的一部分。所以我使用了扩展运算符 (...
) 并将 {observe: "response"}
添加到 options
.
试一试:
post(inURL, data, config = undefined) {
let headers, options;
if (config) {
options = config;
} else {
//headers = this.getDefaultHeader();
//options = new RequestOptions({ headers: headers });
options = httpOptions;
}
options = { ...options, observe: 'response' };
this.httpService.post(inURL, data, options)
.toPromise();
}
您可以在进行 HTTP 调用后 return HttpClient 响应:
getServiceData(): Observable<any>{
return this.httpClient
.post(myUrl, requestBodyObj)
.map((httpResponse: any) => {
if (httpResponse.operationStatus.statusCode === '0') {
return httpResponse.data;
} else {
throw new Error('error in service call');
}
})
}
在你的组件中class你可以订阅服务方法:
myService.subscribe( (data) => {
// do something with data received
}, error => {
// do something when error
})
有关 HttpClient 用法的更多详细信息,请参阅 seen here 官方指南