web-dev-qa-db-fra.com

Comment définir une propriété pouvant être chaîne ou null dans OpenAPI (Swagger)?

J'ai un fichier de schéma JSON dans lequel l'une des propriétés est définie comme étant string ou null:

"type":["string", "null"]

Une fois converti en YAML (pour une utilisation avec OpenAPI/Swagger), il devient:

type:
  - 'null'
  - string

mais l'éditeur Swagger affiche une erreur:

La clé "type" du schéma doit être une chaîne

Quelle est la bonne façon de définir une propriété nullable dans OpenAPI?

23
Vaibhav Patil

type sous forme de tableau de types

type:
  - string
  - 'null'

est NON valide dans OpenAPI/Swagger (même s’il est valide dans le schéma JSON). Le mot clé type d'OpenAPI requiert un seul type et ne peut pas être un tableau de types.

La prise en charge de null dépend de la version d'OpenAPI que vous utilisez:

  • Dans OpenAPI 3.0 , utilisez le mot-clé nullable pour définir les types nullables:

    type: string
    nullable: true   # <----
    
  • OpenAPI 2.0 ne supporte pas null comme type de données. Par conséquent, si vous utilisez 2.0, vous n’avez pas de chance. Vous ne pouvez utiliser que type: string. Cela dit, certains outils prennent en charge x-nullable: true en tant qu'extension de fournisseur, même si les valeurs NULL ne font pas partie de la spécification OpenAPI 2.0.

36
Helen