swagger - 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"
}
}
}
}
}
}
所以我很乐意为算法或如何排序的信息提供指导。
非常感谢您的关注和参与。
解决方案
像这样对文件进行排序总是毫无意义的,因为文件中的内容与顺序无关。
相反,更好的方法是解析 OpenAPI 文件以生成对象(也称为模型),然后可以使用这些对象来运行您所指的操作。
一个很好的例子是Swagger Parser - Java,它将给定的 OpenAPI 规范文件转换为 Java 模型,然后可以根据用例使用这些模型。
请参阅此处以获取特定于不同语言的解析库列表
推荐阅读
- python - python中的多个集合操作
- angular - 带有材料设计垫工具栏问题的Angular 6
- laravel - Laravel artisan 命令测试断言退出代码有风险
- sharepoint - 写入 SharePoint Online 映射的网络驱动器
- amazon-web-services - AWS CLI 按标签搜索资源
- android - 如果字体在 UILabel 的顶部或底部被“截断”,如何修改字体属性
- python - 使用 Beautiful Soup 解析 Grobid .tei.xml 输出
- android - 更新 gradle 3.2 获取 Android 资源编译失败。并得到警告:忽略具有未知名称空间的元素“g”
- html - 你如何获得不同的 Soc。Angular中不同路线的M缩略图?
- python - 为 Python 3.6 (Windows 10) 安装 Tensorflow