java swagger解析解决[malformed or unreadable swagger supplied]

原创不易,转载请注明出处:
https://zhangxiaofan.blog.csdn.net/article/details/141498211


如果你想看完整的 利用swagger-parser解析yaml中的api请求类型、注释、接口名,可以参考这篇文章。

【Spring/Java项目】如何利用swagger-parser解析yaml中的api请求类型、注释、接口名等等(含示例代码)-CSDN博客


今天在用swagger的包解析yaml等swagger文件的时候,遇到这类错误:

malformed or unreadable swagger supplied

maven包

        <dependency><groupId>io.swagger.parser.v3</groupId><artifactId>swagger-parser</artifactId><version>2.1.12</version></dependency>

错误信息

malformed or unreadable swagger supplied

报错代码

...SwaggerParseResult result = new OpenAPIParser().readContents(data.toString(), null, options);OpenAPI openAPI = result.getOpenAPI();Paths paths = openAPI.getPaths();
...

具体报错的地方是:

SwaggerParseResult 类,里面的 openAPI对象是null,错误信息如图所示:

 解决方案

如果我们遇到malformed or unreadable swagger supplied 这类报错,一般是我们的swagger格式有问题。

我们解析和读取swagger的yaml等文件,一把有2种方式:

方式一:直接通过文件解析:

SwaggerParseResult result = new OpenAPIParser().readLocation(filePath, null, options);

方式二:通过content内容解析

SwaggerParseResult result = new OpenAPIParser().readContents(data.toString(), null, options);

你可能用文件解析的,没有问题。但是用content内容去解析的时候,就报错了。这个时候,需要你把文件内容全部检查一遍。

例如 swagger-test1.yaml 内容如下:(看着没有问题

swagger: '2.0'
info:title: ping testversion: '1.0'
host: 'localhost'
basePath: /test
schemes:- "https"
tags:- name: TestManagedescription: 测试管理
paths:/some/ping:get:tags:- TestManageoperationId: pingGetdescription: 一个测试方法parameters:- name: iin: bodydescription: query字段required: trueschema:$ref: './swagger/swagger-reference.yaml#/type'responses:'201':description: OK

上述swagger如果用content的方式读取就会报错:malformed or unreadable swagger supplied。

因为 io.swagger.parser.v3 的包,解析的时候,会认为你的格式不对

schema:$ref: './swagger/swagger-reference.yaml#/type'

所以要换成引用的写法方式:

  schema:$ref: '#swagger/swagger-reference.yaml'

正确的格式应该是:

swagger: '2.0'
info:title: ping testversion: '1.0'
host: 'localhost'
basePath: /test
schemes:- "https"
tags:- name: TestManagedescription: 测试管理
paths:/some/ping:get:tags:- TestManageoperationId: pingGetdescription: 一个测试方法parameters:- name: iin: bodydescription: query字段required: trueschema:$ref: '#swagger/swagger-reference.yaml'responses:'201':description: OK

再运行代码就不会报错了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NC 最长上升子序列(三)

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定数组 arr…

OpenCV+Python识别机读卡

背景介绍 正常机读卡是通过读卡机读取识别结果的&#xff0c;目前OpenCV已经这么强大了&#xff0c;尝试着用OpenCVPython来识别机读卡。要识别的机读卡长这样&#xff1a; 我们做以下操作&#xff1a; 1.识别答题卡中每题选中项结果。 不做以下操作&#xff1a; 1.不识别准…

宝塔面板配置node/npm/yarn/pm2....相关全局变量 npm/node/XXX: command not found

1.打开终端 , cd 到根目录 cd / 2.跳转至node目录下,我的node版本是v16.14.2 cd /www/server/nodejs/v16.14.2/bin 2.1 如果不知道自己node版本多少就跳转到 cd /www/server/nodejs 然后查找当前目录下的文件 ls 确定自己的node版本 cd /node版本/bin 3.继续查看bin…

秋招突击——8/21——知识补充——计算机网络——cookie、session和token

文章目录 引言正文Cookie——客户端存储和管理Session——服务端存储和管理Token补充签名和加密的区别常见的加密算法和签名算法 面试题1、HTTP用户后续的操作&#xff0c;服务端如何知道属于同一个用户&#xff1f;如果服务端是一个集群机器怎么办&#xff1f;2、如果禁用了Co…

android13隐藏调节声音进度条下面的设置按钮

总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 3.代码修改 4.编译运行 5.彩蛋 1.前言 将下面的声音调节底下的三个点的设置按钮,隐藏掉。 效果如下 2.情况分析 查看布局文件 通过布局我们可以知道这个按钮就是 com.android.keyguard.AlphaOptimizedImageB…

记忆化搜索与状态压缩:优化递归与动态规划的利器

记忆化搜索是解决递归和动态规划问题的一种高效优化技术。它结合了递归的灵活性和动态规划的缓存思想&#xff0c;通过保存已经计算过的子问题结果&#xff0c;避免了重复计算&#xff0c;大幅提升了算法的效率。当问题状态复杂时&#xff0c;状态压缩技术可以进一步优化空间使…

跨域解决 | 面试常问问题

跨域解决 | 面试常问问题 跨域问题一直是前端开发中不可避免的一部分&#xff0c;它涉及到浏览器的同源策略和安全机制。本文将深入解析跨域问题的本质&#xff0c;并探讨前端和后端的多种解决方案&#xff0c;同时分享一些扩展与高级技巧。最后&#xff0c;我们还将总结跨域解…

UE基础 —— Components

目录 Component Instancing Instanced Static Mesh Component Instanced Static Mesh Differences of an ISM and a Static Mesh Component Hierarchical Instanced Static Mesh Instancing Systems Working with ISMs Prefabrication Custom Data Creating and Edit…

ElasticSearch 8.15.0 与 Kibana 8.15.0 尝鲜体验

还不算晚&#xff0c;虽然已经距离发布过去了快半个月~ 跟着下面的步骤进行一步一步操作(CV)&#xff0c;只需要改动一下用户名、密码这些数据即可从零开始用 Docker安装 ES 与 Kibana 最新版&#xff0c;据说 Kibana 还有 AI 助手嘞(虽然是 8.12 推出的)~ 最后强调一点&#…

自动化开发流程:使用 GitHub Actions 进行 CI/CD

在现代软件开发过程中&#xff0c;持续集成&#xff08;Continuous Integration, CI&#xff09;和持续部署&#xff08;Continuous Deployment, CD&#xff09;是确保高质量软件交付的关键组成部分。GitHub Actions 提供了一种简便的方式来实现 CI/CD 流程的自动化。本文将介绍…

Unity XR Interaction Toolkit 通过两个手柄控制物体放大缩小

1&#xff1a;给物体添加 XR General Grab Transformer 脚本 2&#xff1a;XR Grab Interactable 的 select mode 选择 Multiple

java-队列--黑马

队列 别看这个&#xff0c;没用&#xff0c;还是多刷力扣队列题 定义 队列是以顺序的方式维护一组数据的集合&#xff0c;在一端添加数据&#xff0c;从另一端移除数据。一般来讲&#xff0c;添加的一端称之尾&#xff0c;而移除一端称为头 。 队列接口定义 // 队列的接口定…

Linux——驱动——杂项设备

一、杂项设备驱动 1、概念 杂项设备&#xff08;Miscellaneous Devices&#xff09;在Linux内核中是一种特殊的设备类型&#xff0c;用于表示那些不适合被归类为其他标准设备类型的设备。这些设备通常具有不规则的特性和非标准的通信协议或接口。 2、操作流程 杂项设备注册过…

中国数据库的崛起:从本土化挑战到全球化机遇

引言 谈起中国的崛起&#xff0c;大家第一反应可能是“中国制造”“高铁奇迹”“电商帝国”&#xff0c;但今天我们要聊的&#xff0c;是一个比这些还要神秘的存在——中国的数据库技术。或许你平时并不会经常关注它&#xff0c;但这个隐身在你手机、电脑、服务器背后的无形力…

002、架构_概览

GoldenDB 主要由管理节点、计算节点、数据节点、全局事务节点等模块组成&#xff0c;各个节点无需共享任何资源&#xff0c;均为独立自治的通用计算机节点&#xff0c;之间通过高速互联的 网络通讯&#xff0c;从而完成对应用数据请求的快速处理和响应。 管理节点在数据库中主要…

如何在寂静中用电脑找回失踪的手机?远程控制了解一下

经过一番努力&#xff0c;我终于成功地将孩子哄睡了。夜深人静&#xff0c;好不容易有了一点自己的时间&#xff0c;就想刷手机放松放松&#xff0c;顺便看看有没有重要信息。但刚才专心哄孩子去了&#xff0c;一时就忘记哄孩子之前&#xff0c;顺手把手机放哪里去了。 但找过手…

种树问题——CSP-J1真题讲解

【题目】 小明在某一天中依次有七个空闲时间段&#xff0c;他想要选出至少一个空闲时间段来练习唱歌&#xff0c;但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息。则小明一共有( ) 种选择时间段的方案 A. 31 B. 18 C. 21 D. 33 【答案】 B 【解析…

Vue.js学习笔记(七)使用sortablejs或el-table-draggable拖拽ElementUI的el-table表格组件

文章目录 前言一、el-table-draggable是什么&#xff1f;二、使用步骤1.安装使用2.sortablejs 总结 前言 记录 el-table-draggable 插件使用方法。 一、el-table-draggable是什么&#xff1f; el-table-draggable的存在就是为了让vue-draggable支持element-ui中的el-table组件…

卸载nomachine

网上的方法:提示找不到命令 我的方法: step1. 终端输入 sudo find / -name nxserver 2>/dev/null确认 NoMachine 的实际安装路径。你可以使用 find 命令在系统中查找 nxserver 脚本的位置。 找到路径后,你可以使用该路径来卸载 NoMachine。 如下图,紫色框中是我的路径…

Android - lock/unlock bootloader

在执行 adb remount 时高版本经常会提示失败 此时就需要对设备的进行解锁操作。记录两个部分&#xff0c;Google解锁和展锐解锁。 目录 一、Google解锁 二、展锐解锁 三、补充跳过按键检测的方案 一、Google解锁 官网介绍的unlock方法如下&#xff1a;锁定/解锁引导加载程序…