Ich möchte gerne ein Array von Strings posten
[
"id1",
"id2"
]
zu einer Swagger-basierten API. In meiner Swagger-Datei habe ich folgende Zeilen:
paths:
/some_url:
post:
parameters:
- name: ids
in: body
required: true
Wie kann der Typ von ids
als String-Array richtig angegeben werden?
Update:
Gemäß der Spezifikation sollte in meiner Option Folgendes funktionieren:
parameters:
- in: body
description: xxx
required: true
schema:
type: array
items:
type: string
https://github.com/Yelp/swagger_spec_validator akzeptiert dies nicht und gibt eine lange Liste gefalteter Fehler zurück, die aussehen, als würde der Code $ref
erwarten.
Ihre Beschreibung eines String-Arrays ist korrekt, aber der Parameterdefinition fehlt die name
-Eigenschaft, um gültig zu sein.
Hier ist ein vollständiges Arbeitsbeispiel:
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
Probieren Sie den Online-Editor aus, um Ihre OpenAPI-Spezifikationen (z. B. Swagger) zu überprüfen: http://editor.swagger.io/
Ich habe ein Swagger-Problem erstellt, da die von Arnaud bereitgestellte Hilfe zwar gültiges yaml ist, aber NPE-Ausnahmen bei der Generierung liefert. Sie müssen ein Objekt wie das folgende angeben:
myDataItem:
type: object
description: A list of values
required:
- values
properties:
values:
type: array
items:
type: string
Und dann verweisen Sie darauf (in Ihrem Post Artikel usw.):
schema:
$ref: "#/definitions/myDataItem"
Zur Referenz der Github-Ausgabe:
https://github.com/swagger-api/swagger-codegen/issues/6745
Beachten Sie, dass das Problem in Version 2.3.0 und höher behoben wurde. Idealerweise sollten Sie ein Upgrade auf diese Version durchführen.
Bei einem Array, das Object als Inhalt enthält, kann die Definition für Object auch mit definitions & $ ref ausgedrückt werden. Beispiel:
schema:
type: array
items:
$ref: '#/definitions/ObjectSchemaDefinition'
definitions:
ObjectSchemaDefinition:
type: string
Die Antwort mit den meisten Stimmen brachte mich in die richtige Richtung. Ich brauchte nur ein Beispiel für ein Array von Objekten, bei denen jedes von ihnen eine Eigenschaft hatte, bei der es sich um ein Array von Strings mit mehr als einem Wert im String-Array handelte. Dank der Dokumentation Ich habe es so funktionieren lassen:
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"]
Dabei ist zu beachten, dass die Eindrückung für Swagger von größter Bedeutung ist. Wenn Sie die Dinge nicht gut einrücken, erhalten Sie mit swagger seltsame Fehlermeldungen.