- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 springfox-swagger2
(OpenAPI 2) 迁移到 springdoc-openapi-ui
(OpenAPI 3),以生成 swagger 文档。
这是一个示例路线:
@RequestMapping("/api/object/")
public interface IObjectController {
@RequestMapping(path = "v1/{param}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
ObjectDto getObjectByParamV1(@PathVariable("param") String code);
}
Swagger 生成与 springfox-swagger2
一起工作得很好,但是我在 springdoc
上遇到以下问题:
Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)
(through reference chain: io.swagger.v3.oas.models.OpenAPI["paths"]->
io.swagger.v3.oas.models.Paths["/api/object/v1/{param}"]->io.swagger.v3.oas.models.PathItem["get"]->
io.swagger.v3.oas.models.Operation["responses"]->io.swagger.v3.oas.models.responses.ApiResponses["null"])
事实上,OpenAPI 尝试序列化以下对象:
responses: class ApiResponses {
{null=class ApiResponse {
description: default response
headers: null
content: class Content {
{*/*=class MediaType {
schema: class ComposedSchema {
class Schema {
type: null
format: null
$ref: null
description: null
title: null
multipleOf: null
maximum: null
exclusiveMaximum: null
minimum: null
exclusiveMinimum: null
maxLength: null
minLength: null
pattern: null
maxItems: null
minItems: null
uniqueItems: null
maxProperties: null
minProperties: null
required: null
not: null
properties: null
additionalProperties: null
nullable: null
readOnly: null
writeOnly: null
example: null
externalDocs: null
deprecated: null
discriminator: null
xml: null
}
allOf: null
anyOf: null
oneOf: [class Schema {
type: object
format: null
$ref: null
description: null
title: null
multipleOf: null
maximum: null
exclusiveMaximum: null
minimum: null
exclusiveMinimum: null
maxLength: null
minLength: null
pattern: null
maxItems: null
minItems: null
uniqueItems: null
maxProperties: null
minProperties: null
required: null
not: null
properties: null
additionalProperties: null
nullable: null
readOnly: null
writeOnly: null
example: null
externalDocs: null
deprecated: null
discriminator: null
xml: null
}, class StringSchema {
class Schema {
type: string
format: null
$ref: null
description: null
title: null
multipleOf: null
maximum: null
exclusiveMaximum: null
minimum: null
exclusiveMinimum: null
maxLength: null
minLength: null
pattern: null
maxItems: null
minItems: null
uniqueItems: null
maxProperties: null
minProperties: null
required: null
not: null
properties: null
additionalProperties: null
nullable: null
readOnly: null
writeOnly: null
example: null
externalDocs: null
deprecated: null
discriminator: null
xml: null
}
}]
}
examples: null
example: null
encoding: null
}}
}
links: null
extensions: null
$ref: null
}, 200=class ApiResponse {
description: OK
headers: null
content: class Content {
{application/json=class MediaType {
schema: class Schema {
type: null
format: null
$ref: #/components/schemas/ObjectDto
description: null
title: null
multipleOf: null
maximum: null
exclusiveMaximum: null
minimum: null
exclusiveMinimum: null
maxLength: null
minLength: null
pattern: null
maxItems: null
minItems: null
uniqueItems: null
maxProperties: null
minProperties: null
required: null
not: null
properties: null
additionalProperties: null
nullable: null
readOnly: null
writeOnly: null
example: null
externalDocs: null
deprecated: null
discriminator: null
xml: null
}
examples: null
example: null
encoding: null
}}
}
links: null
extensions: null
$ref: null
}}
extensions: null
}
如您所见,ApiResponses
中有一个空的 ApiResponse
对象,奇怪的是它有一个 null
键,然后序列化在 jackon 中失败MapSerializer.serialize()
:
// What is this _suppressNulls ?!
// _suppressableValue IS null, but is not suppressed
if ((_suppressableValue != null) || _suppressNulls) {
serializeOptionalFields(value, gen, provider, _suppressableValue);
}
无论我使用多少 Swagger 注释(@Operation
,添加 @ApiResponse
...),这个 null
ApiResponse 仍然存在。我不明白这是从哪里来的,特别是 suppressNull
只影响 values 而不是 keys,根据 MapSerializer.serializeOptionalFields()
。
如何删除这个 null
键控的 ApiResponse ?
最佳答案
看起来原因是在异常处理程序上没有@ExceptionHandler 上的@ResponseStatus。
解决方法是添加以便在 swagger 文档中显示它。
已经存在已修复的问题:
修复将在 v1.3.8 上可用。
关于spring - 从 springfox 迁移到 springdoc 时出现 Null ApiResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61529174/
我正在使用具有以下依赖项的 SpringBoot org.springdoc springdoc-openapi-ui 1.5.12
我使用 swagger 创建 RESTful API,并有多个返回相同错误和响应的端点: @GET @Path("/some/endpoint") @ApiOperation(
我正在使用 Swagger 注释来记录非 spring 上下文中的 API。我发现 400、401 和 404 的响应文档是可重复使用的。由于记录每个响应代码大约需要 8 行,如下所示。 @O
我在 SpringBoot 项目中使用 OpenApi 3 来生成 Swagger html 页面。 POM.xml 中的依赖关系: org.springdoc
我正在寻找一种方法来告诉 swagger 某个 API 响应代码没有响应正文。例如,获取响应可以返回 200 代码以及实际对象作为响应,如果与传递的 ID 关联的对象不存在,则返回 404: @Api
我想在我的方法中添加一个 Swagger 示例,我已经尝试了一些方法,但它们没有用。 我有我的接口(interface),我在其中定义了方法: @Api(value = "test API") @Re
我使用 refit 来调用 API,响应包含在 ApiResonse 中。我可以模拟返回模拟 ApiResponse 的 refit 调用并断言。一切都按预期工作,只是我不确定如何测试返回异常的 ap
我正在使用 Google Cloud Node 库的 BigQuery API https://googlecloudplatform.github.io/google-cloud-node/#/do
我有一个返回 Map 的端点 public Response doStuff(){ Map map = getMap(); return Response.ok(map ).build();
如何将以下 Swagger 注解从 Java 转换为 Kotlin? @ApiResponses(value = { @ApiResponse(code = 200, message = "Give
如何使用 java 注释创建多个 404 响应(或更广泛地说,多个相同的 HTTP 代码响应)。 我试过了: @ApiResponse( responseCode = "404", d
我正在尝试从 springfox-swagger2 (OpenAPI 2) 迁移到 springdoc-openapi-ui (OpenAPI 3),以生成 swagger 文档。 这是一个示例路线:
我正在尝试使用一些公共(public) API 中的数据,但我陷入了有关此数据设计的一些问题。我正在使用 Spring。 我正在用经典的方式来做: private ResponseEntity get
我在代码中有Springfox注释如下: @ApiResponses(value = { @ApiResponse(code = 200, message = "Options
在 Swagger Java API 中,当我使用 code=400 的 responsecontainer="List"(或“Set”)时,我没有在 Swagger-GUI 上获取响应模型。我刚刚得
我对我的 android 应用程序做了一些更改,现在我得到了这个。我认为这可能是由更新我在我的应用程序中使用的自动生成的 ApiGateway SDK 引起的。但也许是别的原因?我什至不确定从哪里开始
我喜欢 Swagger,因为它使您的 API 对用户非常友好。我使用 Swagger 注释,例如 @ApiParam @ApiResponse | @ApiResponses @ApiOperatio
我有一个 Angular 8应用程序。这是服务的样子:- export class UserService{ constructor(private http: HttpClient) { }
如文档中所写,如果我们想要定义多个响应,我们可以将 anyOf 与 @Schema 一起使用。 @ApiResponse(responseCode = "201", description =
我正在使用 springfox 3.0.0 进行响应式支持,并且正在使用 @EnableSwagger2WebFlux在我招摇的配置上。 我的招摇配置如下: @Bean public Docket a
我是一名优秀的程序员,十分优秀!