Je voudrais poster un tableau de chaînes comme
[
"id1",
"id2"
]
à une API basée sur Swagger. Dans mon fichier swagger, j'ai ces lignes:
paths:
/some_url:
post:
parameters:
- name: ids
in: body
required: true
Quelle est la bonne façon de spécifier le type de ids
en tant que tableau de chaînes?
Mettre à jour:
Selon la spécification, les éléments suivants devraient fonctionner dans mon option:
parameters:
- in: body
description: xxx
required: true
schema:
type: array
items:
type: string
https://github.com/Yelp/swagger_spec_validator ne l’accepte pas et renvoie une longue liste d’erreurs compliquées, qui ressemblent au code attend du $ref
.
Votre description d'un tableau de chaînes est correcte, mais la définition du paramètre ne définit pas la propriété name
comme valide.
Voici un exemple de travail complet:
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
Essayez l’éditeur en ligne pour vérifier vos spécifications OpenAPI (fka. Swagger): http://editor.swagger.io/
J'ai créé un problème de swagger, car l'aide fournie par Arnaud, même si yaml est valide, vous donnera des exceptions NPE lorsque vous essayez de générer. Vous devrez fournir un objet comme celui-ci:
myDataItem:
type: object
description: A list of values
required:
- values
properties:
values:
type: array
items:
type: string
Et puis y faire référence (dans votre article de poste, etc.):
schema:
$ref: "#/definitions/myDataItem"
Pour référence à la question github:
https://github.com/swagger-api/swagger-codegen/issues/6745
Remarque: le problème a été résolu dans les versions 2.3.0 et supérieures. Idéalement, vous devez effectuer une mise à niveau vers cette version.
Pour un tableau contenant Object en tant que contenu, la définition de Object peut également être exprimée à l'aide de definitions & $ ref . Exemple:
schema:
type: array
items:
$ref: '#/definitions/ObjectSchemaDefinition'
definitions:
ObjectSchemaDefinition:
type: string
La réponse avec le plus grand nombre de votes m'a conduit dans la bonne direction. J'avais juste besoin d'un exemple d'un tableau d'objets où chacun d'entre eux avait une propriété qui était un tableau de chaînes avec plus d'une valeur dans le tableau de chaînes. Merci à la documentation Je l'ai fait fonctionner comme ceci:
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"]
Une chose à garder à l'esprit est que l'indentation est d'une importance primordiale pour Swagger. Si vous n'indentez pas bien les choses, swagger vous donnera des messages d'erreur étranges.