gpt4 book ai didi

angular - 在 Angular 4/Express 中访问响应状态代码

转载 作者:太空狗 更新时间:2023-10-29 18:30:24 24 4
gpt4 key购买 nike

我正在向 Express REST API 发出 GET 请求,并在将 res.status 设置为 200 后返回数据。在 Angular 中,响应包含数据,但 response.status 始终未定义。

[编辑开始]

根据下面 Martin Adámek 的回答,我尝试更改我的 get 请求以使用 Observable 而不是 Promise,并在请求中包含 { observe: 'response' } 。但响应完全相同 - 仍然没有 response.status。

Angular 4 获取(带 Observable)

requestNew(endPoint:string, type:string, query:string, data:any) {
this.http[type](this.configService.apiHost + endPoint + query, data ? data : '', { observe: 'response' })
.subscribe(
(response:HttpResponse<any>) => {
console.log(response) // Array containing expected data
console.log(response.status) // undefined
}
)
}

[编辑结束]

Angular 4 获取

import { HttpClient, HttpResponse, HttpErrorResponse } from '@angular/common/http';

request(endPoint:string, type:string, query:string, data:any) {
let promise = new Promise((resolve, reject) => {
this.http[type](this.configService.apiHost + endPoint + query, data ? data : '')
.toPromise()
.then((response: HttpResponse<any>) => {
resolve(response);
})
.catch((error: HttpErrorResponse) => {
})
});
return promise;
}

快速 API:

router.get('/clients', (req, res) => {
clientService.GetClients()
.then((data) => {
res.status(204).json(data); // data is sent
})
})

如何在 Angular 4 中访问 response.status?

最佳答案

HttpClient 将自动从 JSON 转换有效负载并将其传递给您。如果你想访问整个响应对象,你可以这样做:

http
.get('/data.json', {observe: 'response'})
.subscribe(resp => {
console.log(resp.status);
});

https://angular.io/guide/http#reading-the-full-response

https://angular.io/api/common/http/HttpResponse

另请注意,GETDELETE 方法的签名与 POSTPUT 不同,没有负载参数,因此您需要将 {observe: 'response'} 作为这些方法的第二个参数传递。

关于angular - 在 Angular 4/Express 中访问响应状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035159/

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