【发布时间】:2021-08-11 10:27:20
【问题描述】:
我正在尝试获取 HttpClient Post 请求的响应正文。这就是我现在所处的位置,尽管我已经根据网上数百个令人沮丧的无用示例尝试了十几种不同的变体。
return this._http
.post<HttpResponse<any>>(
apiURL,
request,
{
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
observe: 'response' as 'body'
}
)
.pipe(
map((response: HttpResponse<any>) => {
if (response.status === 200 || response.status === 406) {
return response.body as RequestResponse;
}
throw Error("There was an error processing your request.");
})
);
我无法控制的 API 返回 406,其中包含我需要访问的响应正文。但是,我这辈子都不能让它进入那里的地图。我可以在管道中捕获错误并在那里的断点处停止,但该响应中的“错误”只是 []。
catchError((error: HttpErrorResponse) => {
return throwError(error); <-- error is always [];
})
请注意,我不一定想在那里 throwError,我已经尝试过其他方法,但如果 error 始终为 [],那么它无论如何都没用。
api 本身是一个 C# azure 函数,并返回:
ObjectResult(theObjectINeed) { StatusCode = StatusCodes.Status406NotAcceptable }
我基本上只想吞下 406 并将响应正文返回给订阅者。我一直在寻找如何做到这一点的几个小时,但文档太糟糕了,而且大多数搜索结果返回的都是多年前的东西,这可能在某个时候有效,但不再有效。
【问题讨论】:
标签: angular angular-httpclient