web-dev-qa-db-ja.com

swagger APIのbodyパラメーターとして文字列の配列を指定します

のような文字列の配列を投稿したい

[
  "id1",
  "id2"
]

swaggerベースのAPIへ。私のswaggerファイルには、次の行があります。

paths:
  /some_url:
    post:
      parameters:
        - name: ids
          in: body
          required: true

idsのタイプを文字列の配列として指定する正しい方法は何ですか?

更新:

仕様によれば、私のオプションでは次のように動作するはずです。

  parameters:
    - in: body
      description: xxx
      required: true
      schema:
        type: array
        items:
          type: string

https://github.com/Yelp/swagger_spec_validator はそれを受け入れず、コードが何らかの$refを期待しているように見える複雑なエラーの長いリストを返します。

20
Achim

文字列の配列の説明は正しいですが、パラメーター定義で有効なnameプロパティが欠落しています。

完全な動作例を次に示します。

swagger: "2.0"

info:
  title: A dummy title
  version: 1.0.0

paths:
  /path:
    post:
      parameters:
        - in: body
          description: xxx
          required: true
          name: a name
          schema:
            type: array
            items:
              type: string
      responses:
        default:
          description: OK

オンラインエディターを使用して、OpenAPI(fka。Swagger)の仕様を確認してください。 http://editor.swagger.io/

28
Arnaud Lauret

Arnaudが提供するヘルプは有効なyamlですが、生成しようとするとNPE例外が発生するため、私はswagger問題を作成しました。次のようなオブジェクトを提供する必要があります。

  myDataItem:
    type: object
    description: A list of values
    required:
      - values
    properties:
      values:
        type: array
        items:
            type: string

そして、それを参照します(投稿アイテムなどで):

  schema:
    $ref: "#/definitions/myDataItem"

Githubの問題を参照するには:

https://github.com/swagger-api/swagger-codegen/issues/6745

この問題はバージョン2.3.0以降で修正されています。理想的には、そのバージョンにアップグレードする必要があります。

8
PeterS

Objectをコンテンツとして含む配列の場合、Objectの定義はdefinitions&$ refを使用して表現することもできます。例:

schema:
    type: array
    items:
        $ref: '#/definitions/ObjectSchemaDefinition'
definitions:
    ObjectSchemaDefinition:
        type: string
3
Abhijeet

最も多くの票を得た答えは、私を正しい方向に導きました。オブジェクトの配列の例が必要でした。オブジェクトのそれぞれに、strings配列に複数の値を持つ文字列の配列であるプロパティがありました。 ドキュメントのおかげで 私はこのように動作しました:

MyObject:
  type: object
  properties:
    body:
      type: array
      items:
        type: object
        properties:
          type: 
            type: string
          values: 
            type: array
            items:
              type: string
      example: 
        - type: "firstElement"
          values: ["Active", "Inactive"]
        - type: "SecondElement"
          values: ["Active", "Inactive"]

留意すべきことの1つは、インデントがSwaggerにとって最も重要であることです。うまくインデントしない場合、swaggerは奇妙なエラーメッセージを表示します。

0
Lucio Mollinedo