我正在尝试使用OpenAPI 3.0记录一个micros服务。该服务返回具有任何字段名并且可以包含任何数组、字符串、数字、true、false、null但不包含对象的Json。字符串可能包含ISO日期。只有很少的已知字段名(例如“@id”)
示例:
{ "@unid" : "a34", "color" : "blue", "value" : 42, "active" : true }
无效样本:
{ "@unid" : "b55",
"shape" : "square",
"params" : { "value" : 42, "active" : true }
}
所以我的第一次尝试是:
title: Root Type for Document
description: A generic document
type: object
properties:
'@unid':
description: Primary key
type: string
'@created':
format: date-time
description: Document creation dateTime as ISO date
type: string
'@size':
format: int32
description: Storage size on backend
type: integer
'@unread':
description: Did user accnowledge having read it
type: boolean
additionalProperties:
anyOf:
-
type: string
-
type: boolean
-
type: integer
-
format: date-time
type: string
example:
'@unid': EA219565FC07ADC600258695004FCE92
'@created': '2021-03-11T14:31:42Z'
'@size': 31
'@unread': false
Color: Red
form: SampleForm
Cost: 31.3
Active: true
lastaccessed: '2021-03-11T14:31:42.000Z'
我检查了OpenAPI字典规范,建议使用:
type: object
additionalProperties: true
但这将允许对象。
我走对了吗?或者说“任何名称、任何值,只是不是另一个对象”是否更容易/正确?
一种不符合OpenAPI 3但符合OpenAPI 3.1的方法是使用not关键字:
type: object
additionalProperties: true
not:
additionalProperties:
type: object
这里的逻辑是:
是否可以使用接口而不是实现这些接口的控制器类来生成swagger ui文档? 将文档放在实现类中会使它看起来杂乱无章。Springfox有这个选项,它在springdoc中可用吗?如果是,怎么做?
API-Platform将为Schemas(AKA模型)生成Swagger/OpenAPI路由留档,然后在留档下方(文档将它们显示为“模型”,但当前版本(如2.7)将它们显示为“模式”)。 为显示这些模式/模型而生成的内容在哪里?如何删除一些?显示它们的功能是Swagger UI的一部分,但API平台必须负责提供JSON配置,从而更改API平台而不是Swagger UI。注意,这篇文章展示了如何添
我正在使用Swashback为ASP生成swagger文档。NET核心API我正在写。在我的API中,我使用了许多自定义Json转换器,因此我接收和返回的Json看起来与C类的定义不完全一样。例如,我可能有这样一个类: 它将被序列化为 然而,Swashuckle将其记录为 我如何告诉Swashback我的模型是如何序列化和反序列化的?
问题内容: 我有一个想要转换为Avro的JSON文档,并且需要为此指定一种模式。这是我要为其定义avro模式的JSON文档: 我可以为非复杂类型定义架构,但不能为复杂的“选项”字段定义架构: 谢谢您的帮助! 问题答案: 您需要使用Avro 复杂类型,尤其是数组和记录。然后将它们嵌套在一起: 另外,为了提高可读性,您可以将架构分为多个文件。
我在一个带注释的对象中有几个枚举,如: 其中枚举定义为: 使用Openapi3,我可以生成一个swagger文档。我的问题是,和,翻译方式不同,如: 我希望< code>Enum2与< code>Enum1一样被记录,因此具有实际的枚举值。有什么方法可以强制这样做,或者解释为什么会这样?两个枚举基本上与示例中的相同。
当使用swagger 2.0时,java。util。Currency类作为一个单独的定义生成。但当我们生成OpenAPI 3.0时,我们遇到了一个问题,即swagger core将其作为属性生成。 我们有f.e.这门课: 根据这段代码,我们使用以下插件配置生成openapi规范: 生成时,这将导致此组件定义: 然后,我们使用以下插件在另一个项目中生成类: 生成类的代码构成了此openapi规范: