6

Swagger を使用して、実際のファイルとファイルの内容を記述するスキーマ オブジェクトを受け入れる API を定義しようとしています。Swagger YAML のスニペットを次に示します。ただし、Swagger Editor では検証されません。

/document:
  post:
    summary: Api Summary
    description: Api Description
    consumes:
      - multipart/form-data
    parameters:
      - name: documentDetails
        in: formData
        description: Document Details
        required: true
        schema:
          $ref: '#/definitions/Document'
      - name: document
        in: formData
        description: The actual document
        required: true
        type: file

Swagger Editor は、次の検証エラーをスローします。

Swagger エラー: データが「oneOf」のスキーマと一致しません

何か不足していますか?または、これは Swagger のサポートされている機能ではありませんか?

4

3 に答える 3

3

これは OpenAPI 3.0 では可能ですが、OpenAPI/Swagger 2.0 では可能ではありません。

OpenAPI/Swagger 2.0 は、フォーム データ内のオブジェクトをサポートしていません。フォーム パラメータは、プリミティブ値、プリミティブの配列、およびファイルにすることができますが、オブジェクトにすることはできません。したがって、OpenAPI 2.0 を使用して例を説明することはできません。

OpenAPI 3.0 では、以下を使用できます。

paths:
  /document:
    post:
      summary: Api Summary
      description: Api Description
      requestBody:
        required: true
        content:
          multipart/form-data:

            # Form parameters from 2.0 become body schema properties in 3.0
            schema:
              type: object
              properties:

                # Schema properties correspond to individual parts
                # of the multipart request
                document:
                  # In 3.0, files are binary strings
                  type: string
                  format: binary
                  description: The actual document

                documentDetails:
                  $ref: '#/components/schemas/Document'
                  # The default Content-Type for objects is `application/json`
              required:
                - document
                - documentDetails

3.0 仕様の関連部分:
ファイル アップロード
に関する考慮事項 マルチパート コンテンツに関する特別な考慮事項

于 2017-06-22T09:59:45.750 に答える