我正在尝试从POST请求获得完整的响应。我已经阅读了如何在angular的官方网站上获得针对get请求的完整响应。 Angular http
它说的是添加{ observe: 'response' }
。但这将适用于get
请求,而不适用于post
请求。 post
请求接受2-3个参数,因此我无法将其作为第4个参数发送。请看看我的代码,让我知道我做错了。
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
return this.http.post('http://localhost:3000/api/Users/login', data, httpOptions, { observe: 'response' })
.do( function(resp) {
self.setSession(resp);
});
这给我一个错误,因为不允许使用4个参数。
修改
已接受的答案现在似乎无法正常工作。我得到以下
error:
error TS2345: Argument of type '{ headers: HttpHeaders; observe: string; }' is not assignable to parameter of type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: Ht...'.
Types of property 'observe' are incompatible.
Type 'string' is not assignable to type '"body"'.
答案 0 :(得分:4)
observe
应该作为属性的一部分httpOptions
。
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
observe: 'response'
};
return this.http.post('http://localhost:3000/api/Users/login', data, httpOptions)
.do( function(resp) {
self.setSession(resp);
});
答案 1 :(得分:0)
所以:我需要更明确地声明httpOptions的类型:
const httpOptions: { headers; observe; } = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
observe: 'response'
};
return this.http.post('http://localhost:3000/api/Users/login', data, httpOptions) ...
答案 2 :(得分:0)
设置以下选项:
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
observe: 'response' as 'response'
};
将“响应”设置为“响应”将强制选择适当的重载。