要获取我正在做的数据:
data = this.http.get(url, httpOptions);
但这只是回归身体。我需要整个响应才能获得状态。我知道这个语法:
data = this.http.get(url, {observe: 'response'});
但这正在取代我的httpOpttions
,这将使我未经认证。我不能像GET
那样在POST
上添加另一个论点。请帮忙!
您无法向http.get
添加第三个参数的原因是因为它不接受第三个参数。 observe
“syntax”是httpOptions
参数的一部分,所以你需要做的就是将你的httpOptions
对象中的内容与{observe: "response"}
合并
例如,如果你的httpOptions
看起来像:
const httpOptions = {
headers: {
"Content-Type": "application/json"
}
}
您可以将其与上面的observe
对象组合,如下所示:
const httpOptions = {
headers: {
"Content-Type": "application/json"
},
observe: "response"
}
如果您接受httpOptions
作为参数(因此您不能像上一个示例那样从头开始创建新的),您可以直接在其上编写observe
字段:
httpOptions.observe = "response"
这些方法中的任何一个都将保留您当前的httpOptions
对象并向其添加observe: "response"
字段。
编辑
要使此方法起作用,您需要向编译器“撒谎”有关observe
的类型以允许它进行编译。您可以通过在as any
对象中将"response"
添加到httpOptions
的末尾来执行此操作:
const httpOptions = {
headers: {
"Content-Type": "application/json"
},
observe: "response" as any
}
这是需要的原因是因为TypeScript无法正确推断原始httpOptions
对象的类型(它希望"response"
是文字"body"
)。告诉TypeScript将"response"
解释为any
解决了这个问题。
使用此代码获取状态。
更新于[15/02/19]:
getOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json;charset=UTF-8',
"authToken": this.token // contains the authToken as parameter in request header
// of http.get method for authorisation.
})
};
// For getting the whole response of the request including status code etc.
getOptions['observe'] = 'response';
return this.http.get(url, getOptions)
.pipe(
catchError(this.handleError)
)
.subscribe(res => {
console.log(res);
},
err => {console.log(err)} );
以上更新的代码将导致给出整个响应