2 votes

Comment réutiliser les définitions Swagger et supprimer certains des paramètres qui s'y trouvent?

Ceci est mon code :

definitions:
  Utilisateur:
    type: object
    properties:
      id:
        type: integer
      nom_utilisateur:
        type: string
      prenom:
        type: string
      nom_de_famille:
        type: string
      mot_de_passe:
        type: string
      cree_le:
        type: string
        format: date-time
      mis_a_jour_le:
        type: string
        format: date-time
    required:
      - nom_utilisateur
      - prenom
      - nom_de_famille
      - mot_de_passe

/api/utilisateurs:
  post:
    description: Ajouter un nouvel utilisateur
    operationId: stocker
    parameters:
      - name: utilisateur
        description: Objet Utilisateur
        in: body
        required: true
        type: string
        schema:
          $ref: '#/definitions/Utilisateur'
    produces:
      - application/json
    responses:
      "200":
        description: Succès
        properties:
          succes:
            type: boolean
          donnees:
            $ref: '#/definitions/Utilisateur'

Comme vous pouvez le voir, dans la clé post sous /api/utilisateurs, j'ai utilisé la définition Utilisateur comme mon schéma.

Je veux réduire mon code donc j'ai réutilisé la définition Utilisateur comme mon schéma. Le problème ici est que je n'ai pas besoin des champs id, cree_le et mis_a_jour_le.

Y a-t-il un moyen d'hériter simplement de certains champs à l'exception des champs mentionnés ? De plus, j'apprécierais quelques suggestions pour l'améliorer puisque j'essaie d'apprendre swagger. Merci.

4voto

Junaid Babatunde Points 138

Comme expliqué dans cette réponse à une question similaire :

Vous devriez définir les modèles séparément.

Cependant, vous avez des options pour les cas d'exclusion et de différence.

Si vous cherchez à exclure, ce qui est le cas le plus simple, créez un modèle avec la propriété exclue, disons ModèleA. Ensuite, définissez ModèleB comme étant ModèleA plus la propriété additionnelle :

ModèleB:
  allOf:
    - $ref: "#/definitions/ModèleA"
    - type: object
      properties:
        id:
          type: string

Si vous cherchez à définir la différence, suivez la même méthode ci-dessus, et excluez l'id de ModèleA. Puis définissez ModèleB et ModèleC comme étendant ModèleA et ajoutez la propriété id à chacun d'eux, avec ses propres restrictions. Notez que JSON Schema peut vous permettre de suivre l'exemple original ci-dessus pour certains cas afin de "remplacer" une définition. Cependant, étant donné que ce n'est pas vraiment un remplacement, et qu'il est nécessaire de comprendre les concepts de JSON Schema pour éviter les erreurs simples, je recommanderais de suivre cette voie pour l'instant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X