4

Python フラスコ レスト プラス サーバー アプリケーションを作成し、' allOf ' 演算子を使用して (POST 操作で) 入力本文のモデルを作成しようとしています。これは、次の例に相当します。闊歩編集者:

definitions:
  XXXOperation:
    description: something...
    properties:
      oper_type:
      type: string
        enum:
          - oper_a
          - oper_b
          - oper_c
      operation:
        allOf:
          - $ref: '#/definitions/OperA'
          - $ref: '#/definitions/OperB'
          - $ref: '#/definitions/OperC'

それは(私のクレイジーな想像の中で)のようなものでなければなりません:

xxx_oper_model = api.model('XXXOperation', {
    'oper_type': fields.String(required=True, enum['oper_a', 'oper_b', 'oper_c']),
    'operation': fields.Nested([OperA, OperB, OperC], type='anyof')
})

OperA、OperB、OperC もモデルとして定義されている場合。どうやってやるの?

実際には、「oneOf」を使用することを好みますが、swagger エディターでもサポートされていないことを理解しているため、必須フィールド以外で「 allOf 」を使用しようとしています。

バージョン:フラスコ restplus: 0.10.1、フラスコ: 0.12.2、python: 3.6.2

どうもありがとう

4

1 に答える 1

-1

を使用する必要がありますapi.inheritドキュメントの例の30ページに記載されているように;

parent = api.model('Parent', {
  'name': fields.String,
  'class': fields.String(discriminator=True)
})

child = api.inherit('Child', parent, {
  'extra': fields.String
})

このように、子は親のすべてのプロパティと独自の追加プロパティを持ちますextra

{
  "Child": {
    "allOf": [
      {
        "$ref": "#/definitions/Parent"
      },
      {
        "properties": {
          "extra": {
            "type": "string"
          }
        }
      }
    ]
  }
}
于 2019-10-09T15:54:35.083 に答える