最近事情太多了,有点忙,博主在经历了5面之后终于拿到了阿里-蚂蚁金服的offer。
没时间更新太多,就记一个简单的源码错误吧。
这次要喷的是:
//OpenApi For Spring compile "io.swagger.core.v3:swagger-models:2.0.10" compile "io.swagger.core.v3:swagger-annotations:2.0.10" compile "io.swagger.core.v3:swagger-integration:2.0.10"
博主的项目不是spring boot项目所以要单独引入swagger3的包(别问我为什么要用3,哈哈,因为博主的项目非常复杂,在同一个项目中还用了2)
好了话不多说,直接上代码:
@Operation(summary = "Move accounts from source-lists to target-lists" ,description = "Move accounts from source-lists to target-lists", responses = { @ApiResponse(responseCode = "200",description = "Success", content = @Content(mediaType = "application/json", schema = @Schema(implementation = BasicRespDTO.class))), @ApiResponse(responseCode = "400", description = "Bad Reqeust - example, improperly formatted start/end date; ",content = @Content(mediaType = "application/json", schema = @Schema(implementation = AlmApiError.class))), @ApiResponse(responseCode = "401", description = "UnAuthorized - for example, the OktaId passed is not associated with the BPN that is passed.",content = @Content(mediaType = "application/json", schema = @Schema(implementation = AlmApiError.class))), @ApiResponse(responseCode = "500", description = "Internal Server Error - ALM Server error processing request.",content = @Content(mediaType = "application/json", schema = @Schema(implementation = AlmApiError.class)))}, requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody( required = true,content = @Content(mediaType = "application/json", schema = @Schema(implementation = AccountsMoveReqDTOV2.class))) )
可以看到很常规的一个注解
但是在最终的openApi3界面上缺显示了一段奇怪的字符:
“永远在requestBody的Schema上面显示-default response”
这尼玛也太奇怪了吧?这明明是个入参DTO为毛显示default response?
博主试了很多方法,都没解决这个奇怪的问题---一直都显示“default response”
-----
实在受不了了就去查openApi3的源码了:
发现openApi3使用了这个类中的:
org/springdoc/core/Constants.java
中的:
public static final String DEFAULT_DESCRIPTION = "default response";
emmmm
-----------
继续找找
有三处源码中用到了这个定义:
1.这个没毛病,说的是响应体的description(有点眉目了)
if (StringUtils.isBlank(apiResponse.getDescription())) { apiResponse.setDescription(DEFAULT_DESCRIPTION); }
2.
这个也没毛病 和1差不多
private void setDescription(io.swagger.v3.oas.annotations.responses.ApiResponse response, ApiResponse apiResponseObject) { if (StringUtils.isNotBlank(response.description())) { apiResponseObject.setDescription(response.description()); } else { apiResponseObject.setDescription(DEFAULT_DESCRIPTION); } }
3.
就是这里,我靠,你说你一个requestBody的description为null
你为什么源码要去用“default response”?????
这不是显然的偷懒吗?
if (StringUtils.isNotBlank(requestBody.description())) { requestBodyObject.setDescription(requestBody.description()); isEmpty = false; } else { requestBodyObject.setDescription(DEFAULT_DESCRIPTION); }
最终博主在自己的openApi3中的requestBody加入了description这个字段,解决了问题。。。
---------------
后续,楼主去swagger3/openApi 的源码库看了,作者好像也发现了这个问题
在后续的版本修复了这个bug
我看了具体的代码,用的是局部变量名在作为requestBody的default description
(源码不在展示)
---------------
所以说使用造好的轮子其实也会有问题,虽然本次问题很简单,但是一定要有查看源码的能力!!
加油!!
相关推荐
SpringMVC+Fastjson+Swagger集成示例完整源码Example。
Swagger新版本3.0(openAPI: 3.0.0)搜索的资源下载包
:blue_book: openapi类型的脚本 :rocket:使用Node.js将和模式转换为TypeScript接口。...npx openapi-typescript https://petstore.swagger.io/v2/swagger.json --output petstore.ts # :crossed_fingers: Loading s
实现案例之Swagger3POMSwagger Configcontroller接口运行测试实现案例之Knife4JPOMyml配置注入配置Controller接口运行测试示例源码 什么是Swagger?Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务。...
java版地图源码Gradle Swagger 生成器插件 这是用于以下任务的 Gradle 插件: 验证 OpenAPI YAML。 使用 和 从 OpenAPI YAML 生成源代码。 使用 OpenAPI YAML 生成 Swagger UI。 使用 OpenAPI YAML 生成 ReDoc。 另...
Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案 帮助开发者快速聚合使用OpenAPI规范. 基础特性 兼容OpenAPI 2.0 兼容OpenAPI 3.0 框架适配 适配兼容Spring MVC 适配兼容Spring Boot 2.2、2.3、2.4、...
word源码java wapadoc - The Wapache OpenAPI Project wapadoc是一个基于 规范开发的类库,旨在通过OpenAPI规范化接口设计、编码和文档的编写,提高第三方对接的开发和调试体验。 本项目期望能帮助您摆脱传统开发...
看不到源码Codegen Spring Boot 示例 合同优先设计用于生成 Spring Boot 服务器代码。 在撰写本文时,有关 swagger-codegen-maven-plugin 及其使用方法的最新文档并不容易找到。 该项目的目标是: 展示如何使用 ...
看不到源码用于 Spring Boot 的 OpenAPI v3 生成器 这个库在运行时自动为 Spring Boot 应用程序生成一个。 它旨在全面分析由 Swagger 注释增强的 Spring 请求映射,以提供应用程序的自描述 API 规范。 特征 Spring ...
symbol-openapi-generator 负责生成Symbol SDK使用的API客户端库的项目。 generate脚本根据创建不同类型... 从当前版本(version.txt)的下载发行的openapi3.yml。 创建开放api规范的修补版本(请参见下面的注释)。
看不到源码Yang2Swagger 生成器 项目是一个 YANG to Swagger() 生成器工具。 OpenAPI 描述并记录了 RESTful API。 使用我们的工具生成的 Swagger 定义旨在符合 . 有了定义,您就可以构建实时文档服务,并使用 ...
java写webapi源码很棒的 .NET Core 一组很棒的框架、库、工具、资源和软件。 灵感来自 , , , 。 总是欢迎贡献! 请先看一下页面。 我们也接受专有和商业软件。 感谢所有人,你们太棒了,没有你们就不可能! 目标是...
驾校管理java源码微服务 在制品 底线 理想情况下... 所有服务均由 API 以编程方式配置。 事件是驱动力 (, , 触发器/动作) 文档是一等公民。 同生共死 服务应该有一个单一的目的(做一件事并且做好),松散耦合(彼此...
Swagger/OpenAPI 文档生成器。 自动化日志管理。 自动创建“新 Lambda”。 快速使用 克隆这个 repo 并进入它: git clone git@github.com:JimTheMan/Titanium-Lambda.git cd Titanium-Lambda 使用节点版本 8.16 或更...
Swagger/OpenAPI 的帮助下基于 JAX-RS 和 JAX-WS 实现 API。 内容: 分析 该示例性 API 是比萨订单管理系统的一部分。 该 API 可由客户端使用,它可以在其中创建和管理比萨订单,如以下用例中所述: UC-1 [Manage ...
Swagger/OpenAPI 的帮助下基于 JAX-RS 和 JAX-WS 实现 API。 内容: 分析 该示例性 API 是比萨订单管理系统的一部分。 该 API 可由客户端使用,它可以在其中创建和管理比萨订单,如以下用例中所述: UC-1 [Manage ...
java8集合源码oas-nodegen 一个库,用于使用 Node.js 的脚本编写能力从 (FKA Swagger) RESTful API 文档生成完全可定制的代码。 安装 通过 npm 安装 oas-nodegen $ npm install oas-nodegen 概述 该库用于编写使用...
看不到源码身份-api-服务器 分支 构建状态 特拉维斯 CI 状态 掌握 此存储库包含与服务器相关的 REST apis 相关的模块 用于生成 API 存根的插件 要生成存根,使用 。 我们对该插件进行了改进,以便可以在给定的包名称...
ajax调用java实例源码音乐匹配 API 是一项强大的服务,允许您以最简单的方式搜索和检索歌词。 它只是有效。 在您的网站或您的应用程序中合法地包含数百万首许可歌词。 在您的网站或应用程序中显示歌词的最快、最强大...
百度地图毕业设计源码 智能财务系统开发笔记 [TOC] 南川,2021年4月 项目概况 TODO 增加本地上传功能(以对OpenAPI进行测试) 研究mongoose -> swagger的实现 对分类结果与图片的本身标注做对比分析 进一步解决只...