web-dev-qa-db-fra.com

Comment définir enum dans swagger.io?

Quelqu'un a-t-il été en mesure de définir des valeurs possibles "enum" dans l'onglet Modèle de swaggger version 2.0? Exemple ici: http://petstore.swagger.wordnik.com/#!/pet/addPet a une option enum pour la propriété 'status' mais cet exemple utilise la version 1.0 de swagger (selon swagger version définie dans l'objet JSON). J'ai essayé d'obtenir la même chose dans la version 2.0 mais pas de chance, pas sûr que la documentation soit correcte pour cela.

Un indice à ce sujet?

43
eloleon

"enum" fonctionne comme ceci:

      {
        "in": "query",
        "name": "sample",
        "description": "a sample parameter with an enum value",
        "type": "string",
        "enum": [ "1", "2"],
        "required": true
      }

Comme vous pouvez le constater, il existe un paramètre de requête appelé sample de type chaîne, avec une enum énonçant deux valeurs possibles. Dans ce cas, l'exemple indique que le paramètre est requis, de sorte que l'interface utilisateur n'affichera pas de valeur vide en tant qu'option.

Pour un échantillon de travail minimal, essayez ceci:

{
  "swagger": "2.0",
  "info": {
    "title": "title",
    "description": "descriptor",
    "version": "0.1"
  },
  "paths": {
    "/sample": {
      "post": {
        "description": "sample",
        "parameters": [
          {
            "in": "query",
            "name": "sample",
            "description": "a sample parameter with an enum value",
            "type": "string",
            "enum": [
              "1",
              "2"
            ],
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request."
          }
        }
      }
    }
  }
}

Pour le tester localement, vous pouvez déclarer une variable (par exemple spec) dans votre javascript et la transmettre à l'objet SwaggerUi.

  var spec = { ... };

  window.swaggerUi = new SwaggerUi({
    url: url,
    spec: spec,
    dom_id: "swagger-ui-container",
    supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
    onComplete: function(swaggerApi, swaggerUi){
    ...

Le paramètre url sera ignoré dans ce cas.

Finalement, la sortie ressemble à ceci:

enter image description here

J'ai été capable de le faire ainsi, mais comme vous pouvez le voir sur l'image ci-dessous pour chaque paramètre créé, la liste déroulante: enter image description here

Ce que je veux obtenir, ce sont les onglets Modèle Nice/Modèle, comme sur l’image ci-dessous, avec les énumérations disponibles répertoriées pour le paramètre. Est-ce possible dans la dernière version de Swagger:

enter image description here

62
Ron

Mise à jour avec la syntaxe YAML:

in: query
name: sample
description: a sample parameter with an enum value
type: string
enum:
    - 1
    - 2
required: true
13
Ricardo Souza