触发长 运行 任务的 CRUD 操作的 REST API 最佳实践

REST API best practices for CRUD operation that triggers a long running task

在我的架构中,我有一组实体,当 created/updated 触发长时间的 运行 任务时,该任务会执行长时间的重新计算(大约 6-7 分钟)。

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

这样可以吗?还是有 better/standard 种方法可以将结果呈现给客户?

{
   "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
      ]
  }
}

通常我会通过以下方式解决这个问题:

  1. 请求时,return 202 Accepted.
  2. 在响应中,return 具有 up-to-date 状态的 link。我通常为此使用 Link header,但您也可以使用 HAL link.