服务器不可用时如何正确处理 http post 请求?
How correct handle http post request when server is not available?
服务器不可用时如何处理正确的 http post 响应?
现在我发送这样的请求:
this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index).subscribe(() => {
// TODO
});
// Code below is not executed father
方法是:
public SendCurrentStep(step: number): Observable<any> {
return this.http.post('https://localhost:9090/NotAvailableUrl', {
'step' : step
})
.map(res => (<any>res)._body === '' ? {} : res)
.catch(this.handleError);
}
当您的服务器不可用时,RXJS
会告诉您。
this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index)
.subscribe(
(sucessResponse) =>
{
// TODO your stuff with returned data
},
(errorResponse) =>
{
// Here if the response is falsey -i.e: code = 500 / 404 ...
}
);
您无需在应用程序前端执行任何操作,您只需确保从后端正确发送响应代码状态以及响应即可。 查看here(和整个页面)以获取更多信息。
PS:删除 .catch(this.handleError);
我认为还有 .map(res => (<any>res)._body === '' ? {} : res)
因为我不确定那是什么意思那里。
您需要从第一个订阅中抛出错误,以便第二个订阅接收到它。像这样...
public SendCurrentStep(step: number): Observable<any> {
return this.http.post('https://localhost:9090/NotAvailableUrl', {
'step' : step
})
.map(res => (<any>res)._body === '' ? {} : res)
.catch((error) =>
{
Observable.throw(this.handleError(e)))
});
}
然后你可以在第二个订阅中以同样的方式捕获它
this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index).subscribe(() => {
// TODO
}).catch((error) => {
Console.log("There was a problem sending this request");
});
你是这个意思吗?如果您的意思是如何判断服务器已关闭,而不是存在内部服务器错误或无效请求 - 您真的不能。您可以使用响应代码吗?
服务器不可用时如何处理正确的 http post 响应?
现在我发送这样的请求:
this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index).subscribe(() => {
// TODO
});
// Code below is not executed father
方法是:
public SendCurrentStep(step: number): Observable<any> {
return this.http.post('https://localhost:9090/NotAvailableUrl', {
'step' : step
})
.map(res => (<any>res)._body === '' ? {} : res)
.catch(this.handleError);
}
当您的服务器不可用时,RXJS
会告诉您。
this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index)
.subscribe(
(sucessResponse) =>
{
// TODO your stuff with returned data
},
(errorResponse) =>
{
// Here if the response is falsey -i.e: code = 500 / 404 ...
}
);
您无需在应用程序前端执行任何操作,您只需确保从后端正确发送响应代码状态以及响应即可。 查看here(和整个页面)以获取更多信息。
PS:删除 .catch(this.handleError);
我认为还有 .map(res => (<any>res)._body === '' ? {} : res)
因为我不确定那是什么意思那里。
您需要从第一个订阅中抛出错误,以便第二个订阅接收到它。像这样...
public SendCurrentStep(step: number): Observable<any> {
return this.http.post('https://localhost:9090/NotAvailableUrl', {
'step' : step
})
.map(res => (<any>res)._body === '' ? {} : res)
.catch((error) =>
{
Observable.throw(this.handleError(e)))
});
}
然后你可以在第二个订阅中以同样的方式捕获它
this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index).subscribe(() => {
// TODO
}).catch((error) => {
Console.log("There was a problem sending this request");
});
你是这个意思吗?如果您的意思是如何判断服务器已关闭,而不是存在内部服务器错误或无效请求 - 您真的不能。您可以使用响应代码吗?