web-dev-qa-db-ja.com

Swagger(OpenAPI)でファイルを投稿する方法は?

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

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

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

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

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

何が間違っている可能性がありますか?

47
Popeye

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

 "paramType": "body",
 "dataType": "file",
18
Popeye

OpenAPI仕様2.0

Swagger 2.0( OpenAPI Specification 2. )では、フォームパラメーター(in: formDatatypefileに設定します。また、操作のconsumesmultipart/form-dataapplication/x-www-form-urlencoded または両方。

  consumes:
    - multipart/form-data  # and/or application/x-www-form-urlencoded
  parameters:
    - name: file
      in: formData   # <-----
      description: The uploaded file data
      required: true
      type: file     # <-----

OpenAPI仕様3.0

OpenAPI Specification 3. では、ファイルはバイナリ文字列、つまり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

マルチパートリクエスト、ファイルの配列:

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

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

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

さらに詳しい情報:

40
mstrthealias

私と一緒に働くようです

 "paramType": "formData",
 "dataType": "file",
4
Artjom Kurapov