在 IntelliJ 中编辑 OpenAPI json 时正确验证引用文件

Proper validation of a referenced file when editing OpenAPI json in IntelliJ

我正在 IntelliJ 中编辑 OpenAPI JSON 规范。自动验证和代码完成工作非常好。

使用的 OpenAPI 版本是 3.0.3,IntelliJ 可以正确检测到。好像内部用了“openapi30.json”来验证,一切正常。

但是,文件变得非常大,是时候使用 $ref.

将一些常用模型从中移出

这就是问题所在。主要规范如下所示(片段):

{
  "openapi": "3.0.3",
  "info": {
    "title": "Cars REST API",
    "description": "Calls, Responses and DTOs for REST",
    "version": "1.0.0"
  },
  "components": {
    "schemas": {
      "car": {
        "$ref": "car.json"
      },
      "car-group": {
        "$ref": "car-group.json"
      }

并且在编辑它时,IntelliJ 将其识别为“openapi30”。

但是,无法识别引用的文档。例如,car.json 文件如下所示:

{
  "car": {
    "required": [
      "id",
      "name"
    ],
    "properties": {
      "id": {
        "type": "integer",
        "format": "int64"
      },
      "name": {
        "type": "string"
      },
      "tag": {
        "type": "string"
      }
    }
  }
}

它被简单地识别为 JSON 文档,而不是 OpenAPI 文档,因此没有正确的验证和代码完成等。

如何告诉 IntelliJ 该文件是 OpenAPI 规范的 部分 ,要这样验证?人们应该认为这可以从主要规范的开始 $ref 中推断出来,但这不起作用。

尝试在引用文件中添加 $schema 值没有效果(而且可能不符合 OpenAPI 规范)。

car.json 手动选择 OpenAPI 3.0 文件类型没有帮助,因为验证(正确地)失败了 - 因为它没有所需的顶级结构(infoopenapi, paths).

也许需要在 IntelliJ 首选项中添加一些特定的 JSON 模式映射?如果是这样的话,它实际上是主要 OpenAPI 规范中的一个子模式或某个标记,那怎么办?

IntelliJ版本为:IntelliJ IDEA 2021.3.2(终极版)

如有任何帮助,我们将不胜感激。

罗恩!

尚不支持此类功能。请投票给https://youtrack.jetbrains.com/issue/IDEA-284305