REST API

报表扩展组件的 REST API 提供下列功能:

  • 获取报表列表。

  • 获取特定报表的详细信息。

  • 运行报表并获取结果。

  • 获取特定报表组的详细信息。

  • 获取 Swagger 文档。

报表 REST API 使用 OAuth2 协议进行身份验证,与 通用 REST 相同。

如需启用报表 REST API,请确保 build.gradle 包含以下依赖:

implementation 'io.jmix.rest:jmix-rest-starter'
implementation 'io.jmix.authserver:jmix-authserver-starter'

如需通过 REST API 提供报表,请在 报表详情 标签页上选中 Available through REST API(REST API 可见) 复选框。

下面提供了一些报表特定 REST API 的介绍。有关如何获取 OAuth 令牌和其他 REST API 功能的相关信息,请参阅 REST API 扩展组件 文档

获取报表列表

可以使用以下 GET 请求获取已有报表列表:

/rest/reports/report

示例:

GET http://localhost:8080/rest/reports/report

Authorization: Bearer j-Rn3PPAiH7cZZfaDiDWQEDp9YU
Content-Type: application/json

响应体将包含标记了 Available through REST API(REST API 可见) 的报表的简要信息:

[
    {
        "id": "cb090350-2694-e2bb-f5d9-813daa8dc418", (1)
        "name": "booksAvailability(xlsx)",(2)
        "code": "BOOKS_AVAIL",(3)
        "group": "4e083530-0b9c-11e1-9b41-6bdaa41bff94"(4)
    },
    {
        "id": "d8c7f4c5-2dd7-c7f1-7286-f8dd286d2603",
        "name": "LiteratureTypes(csv)",
        "group": "4e083530-0b9c-11e1-9b41-6bdaa41bff94"
    }
]
1 报表 ID,
2 报表名称,
3 报表系统编码(如果存在),
4 报表组 ID。

获取报表信息

使用以下 GET 请求获取指定报表的详细信息:

/rest/reports/report/{id}

查询路径的最后一部分是报表标识符,示例:

GET http://localhost:8080/rest/reports/report/cb090350-2694-e2bb-f5d9-813daa8dc418

返回的 JSON 对象将包含报表的以下信息:

{
  "id": "cb090350-2694-e2bb-f5d9-813daa8dc418",
  "name": "booksAvailability(xlsx)",
  "code": "BOOKS_AVAIL",
  "group": "4e083530-0b9c-11e1-9b41-6bdaa41bff94",
  "templates": [
    {
      "code": "DEFAULT",
      "outputType": "XLSX"
    }
  ],
  "inputParameters": []
}

运行报表

如需运行报表,请发送以下 POST 请求:

/rest/reports/run/{id}

路径的最后一部分是报表标识符,示例:

POST http://localhost:8080/rest/reports/run/2dd27fbf-8830-416a-899f-339543f8f27a

报表参数在请求体中传递:

{parameters: [{name: 'author',value: '4b3a21b0-d6b7-4161-b0b6-55f118fbaac5'}]}

要使用非默认模板打印报表,在请求体中传递模板编码:

{template: 'Template_1', parameters: [{name: 'author',value: '4b3a21b0-d6b7-4161-b0b6-55f118fbaac5'}]}

获取报表组信息

特定报表组的详细信息可以通过下列 GET 请求获取:

/rest/reports/group/{groupId}

路径的最后一部分是分组 ID,示例:

GET http://localhost:8080/rest/reports/group/4e083530-0b9c-11e1-9b41-6bdaa41bff94

返回的 JSON 对象将包含报表组的以下信息:

  • 组 ID

  • 组名称

  • 组编码(如果存在)

{
  "id": "4e083530-0b9c-11e1-9b41-6bdaa41bff94",
  "title": "General",
  "code": "ReportGroup.default"
}

获取 OpenAPI 文档

可以通过 GET 请求下列地址获取报表扩展组件的完整 OpenAPI 文档:

http://localhost:8080/rest/reports/docs/openapi.json
http://localhost:8080/rest/reports/docs/openapi.yaml

当从服务端获取 openapi.yaml 时,会返回 application/yaml 类型的响应体,因此请求头中要使用 Accept: application/yaml