拆分一个大的 Jira-Rest-Request

Split a big Jira-Rest-Request

我正在寻找机会拆分一个大请求,例如: rest/api/2/search?jql=(project in (project1, project2, project3....project10)) AND issuetype = Bug AND (component not in (projectA, projectB) OR component = EMPTY)。结果将包含 > 500 个错误 -> 它非常非常慢。我想让他们有不同的请求(执行请求的方法将用@Asynchronous 注释)但 jql 需要相同。我不想单独搜索 project1、project2...project10。如果有人有解决我的问题的想法,那就太好了。 谢谢:)

能不能不分成两部分?如果您在网页中显示(在不影响性能的情况下显示您可以显示的内容。如果是报告,则逐渐获取所有对象并在完成后显示。

  1. 获取 JQL 的总计数并仅获取第 2 步所需的最少信息 - 假设其为 900
  2. 使用分页功能 (maxResults=100) 进行多次调用。
  3. 处理每个请求。

您需要计算分页。首先获取元数据。

rest/api/2/search?jql=[complete search query]&fields=*none&maxResults=0

你应该得到这样的东西:

{"startAt":0,"maxResults":0,"total":100,"issues":[]}

完全没有字段,只有分页元数据。

比这样创建搜索 URI。

   rest/api/2/search?jql=[complete search query]&startAt=0&maxResults=10
   rest/api/2/search?jql=[complete search query]&startAt=10&maxResults=10
   ..etc

注意数据会发生变化,因此您应该做好准备,您不会收到所有数据,并且如果计算成本高昂(特别是 "total"),则不应显示分页元数据。更多Paged API

如果您不想同时运行这两个请求并且需要根据用户请求分页错误,您可以:

  1. 提出请求,将 'maxResults' 属性 设置为您需要的数量。
  2. 在下一个请求中,将 'maxResults' 属性 和 'startAt' 设置为相同的值。
  3. 如果您需要获取更多数据,请使用相同的 'maxResults' 发出新请求,但将 'startAt' 更新为您在之前的请求中获取的错误数。