gpt4 book ai didi

javascript - Angular:你能提取文本响应类型的状态吗?

转载 作者:行者123 更新时间:2023-11-29 20:41:36 24 4
gpt4 key购买 nike

我有一个项目,服务器是用 spring boot 创建的,它返回带有 String 的 ResponseEntity 来发布请求。我希望我的 Angular 应用程序根据响应状态使用react。

this.httpClient.post(
'http://localhost:8080/users',
{
"username": username,
"email": email,
"password": password
},
{
observe: 'response'
})
.subscribe(response => {
if (response.status === 200) {
alert('Hello!');
}
});

然而,使用上面的代码,我收到一条错误记录到控制台,通知:

"Http failure during parsing for http://localhost:8080/users"
(status is 200 as expected but alert does not work).

我知道我可以将 post 的第三个参数更改为

{responseType: 'text'}

并用它消除错误,但我不知道如何获取此类响应的状态代码。

有办法吗?

最佳答案

subscribe 的第一个回调称为 next 回调,每当可观察对象发出值时都会调用它。如果出现错误,将调用 error 回调,它可以作为第二个参数提供给 subscribe(还有其他选择)。当使用responseType: 'text' 时,您没有看到alert 触发的原因是因为您提供的回调函数不是'出现错误时调用。

正如我已经建议的那样,一种选择是提供错误回调。这是一个例子:

this.httpClient.post(
'http://localhost:8080/users',
{ username, email, password },
{ observe: 'response' })
.subscribe(
response => {
// Only called for success.
...
},
errorResponse => {
// Called when there's an error (e.g. parsing failure).
if (errorResponse.status === 200) {
alert('Hello (for real this time)!');
}
});

在这里重新阅读原始问题后,我认为您真正的问题可能只是您没有将 responseType: 'text'observe: 'response'。这是它的样子:

this.httpClient.post(
'http://localhost:8080/users',
{ username, email, password },
{ observe: 'response', responseType: 'text' })
.subscribe(response => {
if (response.status === 200) {
alert('Hello!');
}
});

关于javascript - Angular:你能提取文本响应类型的状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55361913/

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