OpenAPI 3.1: support multi-type
还没有人认领这个 Issue。
评估
调研方向
从 src/test/resources/models/petstore.yaml 开始,并通过 EndpointTest.testYaml 重现故障。跟踪从 OpenApiParser.parse 经过 SchemaValidator 和 ValidatorBase.checkPattern 的验证路径,尤其关注报告的 null 文本。当包含 type [string, 'null'] 的 OpenAPI 3.1 文档能够在不出现 NullPointerException 的情况下完成解析和验证时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
OpenAPI 3.1 drops the nullable property and uses a type array instead.
Unfortunately openapi-parser is not prepared for that (yet).
If you make change petstore.yaml to openapi 3.1.0 and allow be nullable:
tag:
type: [string, 'null']
It'll fail with this error message:
java.lang.NullPointerException: Cannot invoke "java.lang.CharSequence.length()" because "this.text" is null
at java.base/java.util.regex.Matcher.getTextLength(Matcher.java:1808)
at java.base/java.util.regex.Matcher.reset(Matcher.java:461)
at java.base/java.util.regex.Matcher.<init>(Matcher.java:256)
at java.base/java.util.regex.Pattern.matcher(Pattern.java:1180)
at com.networknt.oas.validator.ValidatorBase.checkPattern(ValidatorBase.java:77)
at com.networknt.oas.validator.ValidatorBase.validateStringField(ValidatorBase.java:67)
at com.networknt.oas.validator.ValidatorBase.validateStringField(ValidatorBase.java:57)
at com.networknt.oas.validator.impl.SchemaValidator.runObjectValidations(SchemaValidator.java:48)
at com.networknt.oas.validator.ObjectValidatorBase.runValidations(ObjectValidatorBase.java:18)
at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
at com.networknt.oas.validator.MapValidator.runValidations(MapValidator.java:31)
at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
at com.networknt.oas.validator.ValidatorBase.validateMap(ValidatorBase.java:263)
at com.networknt.oas.validator.ValidatorBase.validateMapField(ValidatorBase.java:257)
at com.networknt.oas.validator.impl.SchemaValidator.runObjectValidations(SchemaValidator.java:56)
at com.networknt.oas.validator.ObjectValidatorBase.runValidations(ObjectValidatorBase.java:18)
at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
at com.networknt.oas.validator.MapValidator.runValidations(MapValidator.java:31)
at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
at com.networknt.oas.validator.ValidatorBase.validateMap(ValidatorBase.java:263)
at com.networknt.oas.validator.ValidatorBase.validateMapField(ValidatorBase.java:257)
at com.networknt.oas.validator.impl.OpenApi3Validator.runObjectValidations(OpenApi3Validator.java:28)
at com.networknt.oas.validator.ObjectValidatorBase.runValidations(ObjectValidatorBase.java:18)
at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
at com.networknt.oas.model.impl.OpenApi3Impl.validate(OpenApi3Impl.java:44)
at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:96)
at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:85)
at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:35)
at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:28)
at com.networknt.openapi.OpenApiHelper.<init>(OpenApiHelper.java:58)
at com.networknt.openapi.EndpointTest.testYaml(EndpointTest.java:55)
- 主要语言
- Java
- 星标
- 13
- 派生
- 9
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
networknt/openapi-parser 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 52/100
networknt/openapi-parser#45 ·
查看 networknt/openapi-parser 的全部 Issue
相似的 Issue
-
[Bug] The producer summary counts an unreported client version as a second version and warns about a version mix可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 74/100
apache/rocketmq-dashboard#6110 ·
维护者通常 4 天内回复
-
`Processing lsp` never exits and leaves orphaned processes可能已有人在做 @overcast302 今天认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 72/100
processing/processing4#1578 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 60/100
维护者通常 1 天内回复
-
[BUG] S3 CORS responses omit Access-Control-Allow-Credentials for matched origins可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
securityHeaders replaces a route's own Content-Security-Policy (0.9.9; weakens embedders' pages)未关闭bug
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复