のような文字列の配列を投稿したい
[
"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
を期待しているように見える複雑なエラーの長いリストを返します。
文字列の配列の説明は正しいですが、パラメーター定義で有効な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/
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以降で修正されています。理想的には、そのバージョンにアップグレードする必要があります。
Objectをコンテンツとして含む配列の場合、Objectの定義はdefinitions&$ refを使用して表現することもできます。例:
schema:
type: array
items:
$ref: '#/definitions/ObjectSchemaDefinition'
definitions:
ObjectSchemaDefinition:
type: string
最も多くの票を得た答えは、私を正しい方向に導きました。オブジェクトの配列の例が必要でした。オブジェクトのそれぞれに、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は奇妙なエラーメッセージを表示します。