鉴别器内的映射在 Swagger 中有什么作用?
What does mapping within discriminator do in Swagger?
explanation in the doc 我不是很清楚。在我的 api 文档呈现后,我看不出有什么不同。
视觉上有什么区别?在什么映射逻辑上做?
例如
MySchema:
oneOf:
- $ref: '#/componets/schemas/SubSchema1'
- $ref: '#/componets/schemas/SubSchema2'
discriminator:
propertyName: some_property:
mapping:
TypeA: '#/componets/schemas/SubSchema1'
TypeB: '#/componets/schemas/SubSchema2'
所以如果你使用 editor.swagger.io it won't be much of a difference. I use Redoc 如果我想验证鉴别器。
举个例子:
您想将读数转换为您首选的测量单位(即 usStandard
)
您的请求对象可能看起来像这样 -
{
"value": 7,
"unitOfMeasure": {
"type": "distance",
"value": "km"
}
}
所以转换后你的 API 将 return
{
"value": 4.3496,
"unitOfMeasure": {
"type": "distance",
"value": "mi"
}
}
因此,根据您的测量单位类型,您必须使用不同的架构。
如果 type
是
distance
然后可能的值 km
和 mi
volume
然后可能的值 L
和 gal
因此您的 OpenAPI 规范您的鉴别器将使用类型 属性 来确定要使用的模式。注意:在这种情况下,类型将是每个模式中的必需 属性。
这与杰克逊的类型相同
@JsonTypeInfo(
use = JsonTypeInfo.Id.CUSTOM,
property = "type",
include = JsonTypeInfo.As.EXISTING_PROPERTY)
public abstract class UOM {
}
@JsonTypeName("distance")
public class DistanceUOM extends UOM {
}
并且 jackson 将使用类型来确定 class 它应该反序列化到哪个位置。
使用此用例创建了 github 要点 See Here
那么 Redoc 将如何呈现它(请参阅 select 类型的下拉菜单)
类型:距离
类型:卷
explanation in the doc 我不是很清楚。在我的 api 文档呈现后,我看不出有什么不同。
视觉上有什么区别?在什么映射逻辑上做?
例如
MySchema:
oneOf:
- $ref: '#/componets/schemas/SubSchema1'
- $ref: '#/componets/schemas/SubSchema2'
discriminator:
propertyName: some_property:
mapping:
TypeA: '#/componets/schemas/SubSchema1'
TypeB: '#/componets/schemas/SubSchema2'
所以如果你使用 editor.swagger.io it won't be much of a difference. I use Redoc 如果我想验证鉴别器。
举个例子:
您想将读数转换为您首选的测量单位(即 usStandard
)
您的请求对象可能看起来像这样 -
{
"value": 7,
"unitOfMeasure": {
"type": "distance",
"value": "km"
}
}
所以转换后你的 API 将 return
{
"value": 4.3496,
"unitOfMeasure": {
"type": "distance",
"value": "mi"
}
}
因此,根据您的测量单位类型,您必须使用不同的架构。
如果 type
是
distance
然后可能的值km
和mi
volume
然后可能的值L
和gal
因此您的 OpenAPI 规范您的鉴别器将使用类型 属性 来确定要使用的模式。注意:在这种情况下,类型将是每个模式中的必需 属性。
这与杰克逊的类型相同
@JsonTypeInfo(
use = JsonTypeInfo.Id.CUSTOM,
property = "type",
include = JsonTypeInfo.As.EXISTING_PROPERTY)
public abstract class UOM {
}
@JsonTypeName("distance")
public class DistanceUOM extends UOM {
}
并且 jackson 将使用类型来确定 class 它应该反序列化到哪个位置。
使用此用例创建了 github 要点 See Here
那么 Redoc 将如何呈现它(请参阅 select 类型的下拉菜单)
类型:距离
类型:卷