要获取我正在做的数据:
data = this.http.get(url, httpOptions);
但这只是返回身体。我需要整个回复才能获得状态。我知道这种语法:
data = this.http.get(url, {observe: 'response'});
但这代替了我的httpOpttions
,这将使我无法通过身份验证。我无法像在GET
中那样在POST
上添加另一个参数。请帮忙!
答案 0 :(得分:1)
之所以不能向您的http.get
添加第三个参数,是因为它不接受第三个参数。 observe
“语法”是httpOptions
参数的一部分,因此您要做的就是将httpOptions
对象中的内容与{observe: "response"}
例如,如果您的httpOptions
如下:
const httpOptions = {
headers: {
"Content-Type": "application/json"
}
}
您可以将其与上面的observe
对象结合起来,如下所示:
const httpOptions = {
headers: {
"Content-Type": "application/json"
},
observe: "response"
}
如果您接受httpOptions
作为参数(因此您不能像上一个示例一样从头创建一个新的参数),则可以直接在其上编写observe
字段:< / p>
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
可以解决此问题。
答案 1 :(得分:0)
使用此代码获取状态。
已于[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)} );
以上更新的代码将导致给出完整的响应