C# RESTAPI触发长时间运行任务的CRUD操作的最佳实践
在我的体系结构中,我有一组实体,当创建/更新这些实体时,它们会触发一个长时间运行的任务,执行长时间的重新计算(大约6-7分钟) 实际上,我在Hangfire中触发了任务,我想向客户机传递一个令牌,该令牌可用于查询另一个端点以监视长时间运行的任务进度。最好的方法是什么 这可以吗,或者有更好的/标准的方法向客户展示结果C# RESTAPI触发长时间运行任务的CRUD操作的最佳实践,c#,api,rest,hangfire,C#,Api,Rest,Hangfire,在我的体系结构中,我有一组实体,当创建/更新这些实体时,它们会触发一个长时间运行的任务,执行长时间的重新计算(大约6-7分钟) 实际上,我在Hangfire中触发了任务,我想向客户机传递一个令牌,该令牌可用于查询另一个端点以监视长时间运行的任务进度。最好的方法是什么 这可以吗,或者有更好的/标准的方法向客户展示结果 { "data": { "id": 2, "dateCreated": "2021
{
"data": {
"id": 2,
"dateCreated": "2021-02-11T17:10:17.16",
"userCreated": "",
"dateModified": "2021-02-11T17:10:17.16",
"userModified": "",
"code": "SPEC-002",
"name": "My entity",
"_links": [
// HATEOAS links
],
"_tasks": [
// long running tasks info
]
}
}
通常我会通过以下方式解决这个问题:
202 Accepted
链接
标题进行此操作,但您也可以使用HAL链接嗯。。。在我的例子中,由于插入/更新请求,长时间运行的任务是一种“副作用”;返回
201
或204
和标题中的链接(或作为HAL)不是更正确吗?如果您觉得“创建了一个长时间运行的任务”比“您做了一个操作,它还没有完成,请参见此处的状态”更具语义意义,那么这似乎很合理。在这种情况下,我不认为哈尔真的规定了你应该如何格式化这种东西。对我来说,它们只是常规属性。如果在单独的资源上有“长时间运行的任务信息”对您有意义,您仍然可以链接到ofc,并且您还可以将数据放入\u embedded
。非常感谢!