我想给一个对象属性添加一个描述,它的定义被引用了。类似于:
newCreditCard:
type: object
properties:
billingPhone:
description: Phone number of the card holder
$ref: "#/definitions/PhoneNumber"
但编辑器警告将跳过description属性:
Extra JSON Reference properties will be ignored: description
我发现了一个不太优雅的变通方案,适用于编辑器,但不适用于Swagger UI(不确定这可能是由于最近更新到3. 0. 2版本的Swagger UI)
newCreditCard:
type: object
properties:
billingPhone:
description: Phone number of the card holder
allOf:
- $ref: "#/definitions/PhoneNumber"
在您的Swaggers规范中如何做到这一点?
谢谢你的帮助!
4条答案
按热度按时间s4chpxco1#
如果您将任何内容添加到
$ref
的同一级别,它将被忽略。json $引用https://datatracker.ietf.org/doc/html/draft-pbryan-zyp-json-ref-03#section-3
正确的方法是在被引用对象中提供描述。
oxcyiej72#
您可以简单地将
description
属性移到PhoneNumber
的定义中。您的原始帖子没有显示您是如何定义PhoneNumber
的,但是下面的代码片段验证了此代码,没有警告:如果这个答案不是你想要的,请重新回答问题。我们需要知道你想要达到什么目的。
a7qyws3x3#
虽然它不符合JSON标准。如果您使用Swashbuckle生成swagger,我利用schema的“Extensions”属性,并设法创建了一个swagger JSON,它具有$ref和扩展属性。
ccgok5k54#
对于将Swashbuckle与ASP.NET一起使用的任何人,您可以使用以下代码将
$ref
构造置于allOf
之下(就像:现在,如果您有一个模型,其中有两个相同类型的属性,则每个字段的单独描述将显示在Swagger UI中(例如,下面的
FooHeader
和BarHeader
都是HttpHeader
类型的属性,它们的描述将显示):