首页 > 解决方案 > swagger端点的排序算法

问题描述

我目前正在使用 Swagger-parser 并制作一个应用程序来解析 swagger 文件并通过发送 HTTP 请求来尝试给定的端点并将状态代码与 swagger 文件进行比较。

而且我在找到对端点进行排序的适当算法时遇到了问题。例如,我想确保创建对象的 POST 请求在需要来自先前 POST 请求的 id 参数的端点之前得到处理。

swagger-file 下面的顺序正确,但它将是未排序的文件,然后我需要某种算法..

"paths": {
"/pets": {
  "post": {
    "summary": "Create a pet",
    "operationId": "createPets",
    "tags": [
      "pets"
    ],
    "responses": {
      "201": {
        "description": "Null response"
      },
      "default": {
        "description": "unexpected error",
        "schema": {
          "$ref": "#/definitions/Error"
        }
      }
    }
  }
},
"/pets/{petId}": {
  "get": {
    "summary": "Info for a specific pet",
    "operationId": "showPetById",
    "tags": [
      "pets"
    ],
    "parameters": [
      {
        "name": "petId",
        "in": "path",
        "required": true,
        "description": "The id of the pet to retrieve",
        "type": "string"
      }
    ],
    "responses": {
      "200": {
        "description": "Expected response to a valid request",
        "schema": {
          "$ref": "#/definitions/Pets"
        }
      },
      "default": {
        "description": "unexpected error",
        "schema": {
          "$ref": "#/definitions/Error"
        }
      }
    }
  }
}

}

所以我很乐意为算法或如何排序的信息提供指导。

非常感谢您的关注和参与。

标签: swaggeropenapiswagger-2.0

解决方案


像这样对文件进行排序总是毫无意义的,因为文件中的内容与顺序无关。

相反,更好的方法是解析 OpenAPI 文件以生成对象(也称为模型),然后可以使用这些对象来运行您所指的操作。

一个很好的例子是Swagger Parser - Java,它将给定的 OpenAPI 规范文件转换为 Java 模型,然后可以根据用例使用这些模型。

请参阅此处以获取特定于不同语言的解析库列表


推荐阅读