Bonjour,
Je ne sais pas s'il s'agit d'un bug ou d'une amélioration, mais le voici
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 :
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 :
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
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
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 ?
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.