gpt4 book ai didi

angular - 当 API 返回 204 状态代码时,httpclient 响应为 null

转载 作者:行者123 更新时间:2023-12-03 16:04:19 27 4
gpt4 key购买 nike

我有一个休息端点 /Products/latest如果没有产品和以下通用 Angular 服务,则返回 204:

  getFromAPI(url: string) {
const params = new HttpParams();

return this.http
.get(url, { params: params })
.catch((err: HttpErrorResponse) => {
console.error(`Backend returned code ${err.status}, body was: ${err.error}`);
return Observable.of([]);
});
}


 getFromAPI() {
return this.masterService.get('/Products/latest').map((res: Response) => {
if (res.status === 204) {
return Observable.of([]);
} else {
return res;
}

});
}

但是,当服务产生 204 代码时,我收到以下错误:

TypeError: Cannot read property 'status' of null



这怎么会发生?如果 API 以 204 响应,为什么整个响应为空?

最佳答案

首先,我会说它是strange (or wrong)您的后端为空集合返回 204 而不是 200 和空列表。

我使用 Angular7 和 RxJS6 构建了一个测试用例,其中我的后端配置如下:

[HttpGet("/Products/latest")]
public async Task<NoContentResult> list()
{
return NoContent();
}

在前端使用:
public getFromAPI() {
return this.httpClient.get('/Products/latest', { observe: 'response' }).pipe(
switchMap(res => res.status === 204 ? of([]) : of(res))
).subscribe();
}

尽管没有正文,但响应显然包含一个状态:

enter image description here

您的问题可能出在 this.masterService这似乎是代理您的 http 客户端并吞下一些属性?

关于angular - 当 API 返回 204 状态代码时,httpclient 响应为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53654051/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com