64

Swaggerを使用してRESTサービスを文書化しています。私のサービスの1つでは、CSVファイルをアップロードする必要があります。parametersJSONAPI定義のセクションに以下を追加しました。

{
       "name": "File",
       "description": "The file in zip format.",
       "paramType": "body",
       "required": true,
       "allowMultiple": false,
       "dataType": "file"
}

SwaggerUIページにファイルアップロードオプションが表示されます。しかし、ファイルを選択して[試してみる]をクリックすると、次のエラーが発生します。

NS_ERROR_XPC_BAD_OP_ON_WN_PROTO:jquery-1.8.0.min.jsのWrappedNativeプロトタイプオブジェクトに対する不正な操作(2行目)

ページは継続的に処理されており、応答がありません。

何が間違っている可能性があるのか​​?

4

4 に答える 4

80

OpenAPI仕様2.0

Swagger 2.0(OpenAPI仕様2.0 )では、ファイルに設定されたフォームパラメーター(in: formData)を使用します。さらに、操作はである必要があります。typeconsumesmultipart/form-data

  consumes:
    - multipart/form-data
  parameters:
    - name: file
      in: formData   # <-----
      description: The uploaded file data
      required: true
      type: file     # <-----

OpenAPI仕様3.0

OpenAPI仕様3.0では、ファイルはバイナリ文字列、つまりtype: string+ format: binary(またはformat: byteユースケースによっては、)として定義されます。ファイルの入出力コンテンツは、他のスキーマタイプと同じセマンティクスで記述されます(OpenAPI 2.0とは異なります)。

マルチパートリクエスト、シングルファイル:

requestBody:
  content:
    multipart/form-data:
      schema:
        type: object
        properties:
          # 'file' will be the field name in this multipart request
          file:
            type: string
            format: binary

マルチパートリクエスト、ファイルの配列(SwaggerUI3.26.0以降およびSwaggerEditor3.10.0以降でサポート):

requestBody:
  content:
    multipart/form-data:
      schema:
        type: object
        properties:
          # The property name 'file' will be used for all files.
          file:
            type: array
            items:
              type: string
              format: binary

POST / PUTファイルを直接(リクエストの本文はファイルの内容です):

requestBody:
  content:
    application/octet-stream:
      # any media type is accepted, functionally equivalent to `*/*`
      schema:
        # a binary file of any type
        type: string
        format: binary

注:セマンティクスは、他のOpenAPI3.0スキーマタイプと同じです。

# content transferred in binary (octet-stream):
schema:
  type: string
  format: binary

さらに詳しい情報:

于 2016-06-20T21:50:36.383 に答える
19

ついに私はこれに対する答えを見つけました、実際には以前はファイルのアップロードのサポートがありませんでした、今彼らはswagger-ui.jsファイルを更新しました。古いものを新しいものに置き換える必要があります。また、特定のパラメーターのパラメーターでこれらのプロパティを定義する必要があります。

 "paramType": "body",
 "dataType": "file",
于 2013-02-26T10:54:36.320 に答える
4

私のは

 "paramType": "formData",
 "dataType": "file",
于 2015-11-30T17:03:21.753 に答える
1

Open APIv3.0.3を使用しています

これが私のswagger.jsonの外観です:

"/media/upload": {
      "post": {
        "tags": ["Media"],
        "name": "Upload Media",
        "description": "Uploads a Media file to the server.",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "media": {
                    "type": "string",
                    "format": "base64"
                  }
                }
              }
            }
          }
        }
      }
    }

これがSwaggerでどのように表示されるかです。

ここに画像の説明を入力してください

于 2020-05-01T00:35:55.853 に答える