Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RESTAPI触发长时间运行任务的CRUD操作的最佳实践_C#_Api_Rest_Hangfire - Fatal编程技术网

C# RESTAPI触发长时间运行任务的CRUD操作的最佳实践

C# RESTAPI触发长时间运行任务的CRUD操作的最佳实践,c#,api,rest,hangfire,C#,Api,Rest,Hangfire,在我的体系结构中,我有一组实体,当创建/更新这些实体时,它们会触发一个长时间运行的任务,执行长时间的重新计算(大约6-7分钟) 实际上,我在Hangfire中触发了任务,我想向客户机传递一个令牌,该令牌可用于查询另一个端点以监视长时间运行的任务进度。最好的方法是什么 这可以吗,或者有更好的/标准的方法向客户展示结果 { "data": { "id": 2, "dateCreated": "2021

在我的体系结构中,我有一组实体,当创建/更新这些实体时,它们会触发一个长时间运行的任务,执行长时间的重新计算(大约6-7分钟)

实际上,我在Hangfire中触发了任务,我想向客户机传递一个令牌,该令牌可用于查询另一个端点以监视长时间运行的任务进度。最好的方法是什么

这可以吗,或者有更好的/标准的方法向客户展示结果

{
   "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
    。非常感谢!