如何在OpenAPI(Swagger)中将$ ref属性声明为readOnly?

时间:2018-07-18 12:34:36

标签: swagger swagger-2.0 openapi

在此示例中,我尝试为“房子”添加一个只读字段。这房子是我想成为只读的另一种模型。

在此示例中,可以将Dogs数组设置为readOnly,而不会出现错误,但是当我将House的单一定义设置为readOnly时,在Swagger编辑器中会收到以下警告:< / p>

  

$ refs不允许同级值

我知道这是因为模型中的所有内容都在这里继承。那么,如何定义写API调用不能在此端点中定义“房屋”,而又允许在其他API端点中创建和更新房屋?

Pets:
  properties:
    id:
      type: string
      example: AAAAE12-1123AEF-1122312123
      readOnly: true
    name:
      type: string
      example: My Default Name
    text:
      type: string
      example: My Default Text
  Dogs:
    type: array
    readOnly: true
    items:
      $ref: '#/definitions/Dog'    
  House:
    readOnly: true
    $ref: '#/definitions/House'

2 个答案:

答案 0 :(得分:4)

您需要allOf才能将$ref与其他属性组合在一起:

  House:
    readOnly: true
    allOf:
      - $ref: '#/definitions/House'

答案 1 :(得分:0)

我刚刚找到了结果,想与您分享,如下所示,您可以使用 readyonly 属性来隐藏任何字段:

  • Java 代码:

@ApiModelProperty(example = "1", readOnly = true, value = "User status")

public String getUserStatus() { return userStatus; }