Apicurio-studio: L'ordre des chemins dans l'API yml n'est pas ordonné et ne correspond pas au chemin dans l'interface utilisateur

Créé le 12 mars 2019  ·  5Commentaires  ·  Source: Apicurio/apicurio-studio

Bonjour,

Je ne sais pas s'il s'agit d'un bug ou d'une amélioration, mais le voici

La description du problème

Disons que je veux créer une API avec quatre chemins :

  • POST /bar
  • GET /bar/{id_bar}
  • POST /foo
  • GET /foo/{id_foo}

Mais considérons que je les insère à l'aide de l'interface utilisateur dans cet ordre spécifique :

  • GET /foo/{id_foo}
  • POST /bar
  • GET /bar/{id_bar}
  • POST /foo

L'interface utilisateur est agréable et les chemins apparaissent triés, correspondant à ce que je veux :

image

Mais, le yml résultant n'est pas ordonné et ne correspond pas à ce qui apparaît dans l'interface utilisateur :

openapi: 3.0.2
info:
    title: 'Test API'
    version: 1.0.0
paths:
    '/foo/{id_foo}': {}
    /bar: {}
    '/bar/{id_bar}': {}
    /foo: {}

Normalement, je ne me soucierais pas vraiment de l'ordre des chemins dans le fichier yml brut
Mais le fait est que ReDoc suit l'ordre des chemins dans le yml

La documentation résultante n'est donc pas ordonnée :

image

image

C'est un problème car une fois qu'une API commence à vivre, certains chemins sont mis à jour, certains sont supprimés et certains sont créés
Cela signifie que la documentation qui en résulte devient rapidement un gâchis confus

Ce qui peut être fait

J'ai quelques idées, elles sont loin d'être parfaites mais c'est un début
Peut-être pouvons-nous nous appuyer sur eux et élaborer

  • Toujours trier l'API sortie
    Avantages : Facile à mettre en œuvre (je pense ?)
    Inconvénients : les utilisateurs ne peuvent pas choisir leur propre commande
  • Ajouter une option pour trier les chemins dans l'API de sortie
    Avantages : Facile à mettre en œuvre (je pense ?)
    Inconvénients : l'utilisateur ne peut pas modifier l'ordre des chemins individuels
  • Modifier l'UI pour que les chemins affichés ne soient pas ordonnés,
    et ajoutez un bouton pour tout trier + des boutons pour déplacer les chemins individuels de haut en bas
    Avantages : résoudrait tout
    Inconvénients : plus difficile à mettre en œuvre (je pense ?)
enhancement

Commentaire le plus utile

J'ai également rencontré ce problème; mon observation à ce sujet est qu'APICURIO ajoute simplement une nouvelle définition au YAML actuel soit lorsque nous créons de nouveaux chemins; ou lorsque nous remplaçons totalement yaml (par exemple pour un chemin individuel si je modifie quelque chose à partir de l'onglet 'source').

Je manipule manuellement la base de données pour résoudre ce problème après avoir modifié moi-même YAML (puis mis à jour la colonne), et d'une manière ou d'une autre, tout ce que je dois supprimer du projet et redémarrer.

Comme @EricWittmann l' a dit, je pense qu'il est préférable de trier les chemins et autres listes avant de remettre le contenu à ReDoc, ou nous pourrions utiliser un autre bouton dans l'onglet 'source' à côté du bouton 'Format' (peut-être en le nommant 'Trier les chemins'), que nous pouvons gérer par nous-mêmes.

Tous les 5 commentaires

Oups, désolé, j'ai oublié de joindre le YML que j'ai utilisé pour les captures d'écran ReDoc
(Celui que j'ai collé n'a pas d'opérations, donc ReDoc génère un document vide)

openapi: 3.0.2
info:
    title: 'Test API'
    version: 1.0.0
paths:
    '/foo/{id_foo}':
        get:
            summary: 'Obtain a foo'
            parameters:
                -
                    name: id_foo
                    in: path
                    required: true
                    schema:
                        type: number
            responses:
                '201':
                    description: 'A foo'
    /bar:
        post:
            summary: 'Create a bar'
            responses:
                '200':
                    description: 'A bar'
    '/bar/{id_bar}':
        get:
            summary: 'Obtain a bar'
            parameters:
                -
                    name: id_bar
                    in: path
                    required: true
                    schema:
                        type: number
            responses:
                '201':
                    description: 'Bar created'
    /foo:
        post:
            summary: 'Create a foo'
            responses:
                '200':
                    description: 'Foo created'

C'est une question intéressante qui, étonnamment, n'a pas été soulevée auparavant ! Il y a en fait quelques endroits dans l'interface utilisateur où je pense que nous devrions fournir votre option C - afficher les éléments dans l'ordre dans lequel ils apparaissent dans le document mais offrir des options pour trier et réorganiser (glisser-déposer, vraisemblablement).

Cela dit, une solution temporaire serait de trier les chemins et autres listes avant de remettre le contenu à ReDoc. Ce serait rapide et facile à faire et résoudrait le problème spécifique de la fonction "Aperçu" d'Apicurio.

Des pensées/idées à ce sujet, @jsenko ?

J'ai également rencontré ce problème; mon observation à ce sujet est qu'APICURIO ajoute simplement une nouvelle définition au YAML actuel soit lorsque nous créons de nouveaux chemins; ou lorsque nous remplaçons totalement yaml (par exemple pour un chemin individuel si je modifie quelque chose à partir de l'onglet 'source').

Je manipule manuellement la base de données pour résoudre ce problème après avoir modifié moi-même YAML (puis mis à jour la colonne), et d'une manière ou d'une autre, tout ce que je dois supprimer du projet et redémarrer.

Comme @EricWittmann l' a dit, je pense qu'il est préférable de trier les chemins et autres listes avant de remettre le contenu à ReDoc, ou nous pourrions utiliser un autre bouton dans l'onglet 'source' à côté du bouton 'Format' (peut-être en le nommant 'Trier les chemins'), que nous pouvons gérer par nous-mêmes.

Comme #394, je pense que l'idée générale ici est que l'interface utilisateur d'Apicurio doit correspondre à l'ordre YAML pour tous les types d'éléments (chemins, champs, probablement types de données) car cet ordre est parfois important (comme pour générer de la documentation).

Une chose simple qui serait utile ici est d'activer le bouton Enregistrer lors de la modification du YAML brut et de modifier uniquement l'ordre des éléments. Actuellement, Apicurio est un peu trop intelligent et grise le bouton Enregistrer alors que la seule chose qui a changé est l'ordre des éléments.

Je pense que la meilleure chose est que la commande dans l'interface utilisateur corresponde à la source (comme mentionné) et que les utilisateurs puissent déplacer des éléments par glisser-déposer. Ce n'est pas un changement trivial, mais c'est la bonne chose à faire à l'OMI. Pensées @jsenko ?

Cette page vous a été utile?
0 / 5 - 0 notes