在 React 应用程序的服务器端等待一个漫长的过程
Waiting for a long process at server-side from a React app
我正在构建一个前端应用程序,它在服务器端启动耗时的进程。当流程完成时,哪种方法应该是通知客户端应用程序的正确方法?
为了避免连接超时问题,在这种情况下,最好让客户端检查进程何时完成。
在这种情况下,REST API 的最佳行动方案是 return 带有 202 (Accepted)
状态代码的响应。此状态码 means:
The request has been accepted for processing, but the processing has not been completed.
在此响应的有效负载中,您可以提供客户端可用于检查请求状态的端点,例如:
{
"task": {
"href": "/api/jobs/1234",
"id": "1234"
}
}
然后客户端可以使用提供的端点来检查处理请求的作业的状态。这些响应应包含 200 状态代码,并且可能包含如下有效负载:
{
"job" : {
"@uri" : "/api/jobs/1234" ,
"id" : "1234",
"job-state" : "SCHEDULED",
"percent-complete" : "0",
"scheduled-start-time" : "11-05-2020 01:31:00 PM GMT",
"start-time" : "",
"end-time" : "",
"result": ""
}
}
如果此作业的目的是生成新资源,您可以在上述有效负载中使用 result
键来包含指向新创建资源的 URL。同样,如果作业失败,您可以包含一个 error
键来指示它失败的原因。
我正在构建一个前端应用程序,它在服务器端启动耗时的进程。当流程完成时,哪种方法应该是通知客户端应用程序的正确方法?
为了避免连接超时问题,在这种情况下,最好让客户端检查进程何时完成。
在这种情况下,REST API 的最佳行动方案是 return 带有 202 (Accepted)
状态代码的响应。此状态码 means:
The request has been accepted for processing, but the processing has not been completed.
在此响应的有效负载中,您可以提供客户端可用于检查请求状态的端点,例如:
{
"task": {
"href": "/api/jobs/1234",
"id": "1234"
}
}
然后客户端可以使用提供的端点来检查处理请求的作业的状态。这些响应应包含 200 状态代码,并且可能包含如下有效负载:
{
"job" : {
"@uri" : "/api/jobs/1234" ,
"id" : "1234",
"job-state" : "SCHEDULED",
"percent-complete" : "0",
"scheduled-start-time" : "11-05-2020 01:31:00 PM GMT",
"start-time" : "",
"end-time" : "",
"result": ""
}
}
如果此作业的目的是生成新资源,您可以在上述有效负载中使用 result
键来包含指向新创建资源的 URL。同样,如果作业失败,您可以包含一个 error
键来指示它失败的原因。