角2 HttpClient的错误体
我使用的是新的(4.3)的HttpClient的角度来POST数据到我的后端服务器:角2 HttpClient的错误体
this.httpClient.post<View>(`/path`, data).subscribe(
(view: View) => console.log("Success"),
(error: HttpErrorResponse) => {
console.log(error)
this.errorMessage = <any>error.error;
});
);
此调用生成(预期的)错误(409),但对于一些原因,记录的错误不包含从服务器发送的错误的正文。我可以看到状态码,但error.error
字段应该包含响应正文缺失。任何人有任何想法可能是错误的?
我已经使用curl测试了后端调用,并且可以从服务器中看到响应主体。
您的错误正文是以JSON格式还是未格式化的文本/其他格式?我有一个类似的问题,直到我意识到返回错误结果的主体是一个简单的字符串。我不得不改变调用与此类似(原谅缺乏类型安全的位置):
this.http.post('http://address', body, { responseType: 'text' })
.subscribe(data => {
this.result = data['value'];
this.router.navigate(['/route']);
}, (error: HttpErrorResponse) => {
this.error = error.error;
this.router.navigate(['/error']);
});
这是使用新的HttpClient吗?当我使用该语法时,出现错误:'TS2345:类型'{responseType:“text”; }'不能分配给类型为'{headers?:HttpHeaders;观察?:“身体”; params ?: HttpParams; reportProgress?:boolean;负责...'。' –
@DanielScott请参阅https://angular.io/guide/http#requesting-non-json-data {responseType:'text'}转到身体参数,紧跟在url之后。 – user1740331
所以在此期间没有用户友好的消息? – naoru
如果你的服务器的响应不是json ... –
我已经用拦截器解决了它。 –