Hallo,
Ich weiß nicht, ob dies ein Fehler oder eine Verbesserung ist, aber hier ist es
Nehmen wir an, ich möchte eine API mit vier Pfaden erstellen:
POST /bar
GET /bar/{id_bar}
POST /foo
GET /foo/{id_foo}
Aber nehmen wir an, ich füge sie über die Benutzeroberfläche in dieser bestimmten Reihenfolge ein:
GET /foo/{id_foo}
POST /bar
GET /bar/{id_bar}
POST /foo
Die Benutzeroberfläche ist nett und die Pfade erscheinen sortiert und entsprechen meinen Wünschen:
Das resultierende YML ist jedoch nicht geordnet und stimmt nicht mit dem überein, was in der Benutzeroberfläche angezeigt wird:
openapi: 3.0.2
info:
title: 'Test API'
version: 1.0.0
paths:
'/foo/{id_foo}': {}
/bar: {}
'/bar/{id_bar}': {}
/foo: {}
Normalerweise würde ich mich nicht wirklich um die Reihenfolge der Pfade in der rohen YML-Datei kümmern
Aber die Sache ist, dass ReDoc der Reihenfolge der Pfade in der yml folgt
Die resultierende Dokumentation ist also nicht geordnet:
Dies ist ein Problem, denn sobald eine API aktiv wird, werden einige Pfade aktualisiert, einige gelöscht und einige neu erstellt
Das bedeutet, dass die resultierende Dokumentation schnell zu einem verstümmelten Durcheinander wird
Ich habe ein paar Ideen, sie sind alles andere als perfekt, aber es ist ein Anfang
Vielleicht können wir darauf aufbauen und weiter ausarbeiten
Ups, Entschuldigung, ich habe vergessen, die YML anzuhängen, die ich für die ReDoc-Screenshots verwendet habe
(Dasjenige, das ich eingefügt habe, hat keine Operationen, daher generiert ReDoc ein leeres Dokument.)
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'
Dies ist ein interessantes Thema, das überraschenderweise noch nie zuvor aufgetreten ist! Es gibt tatsächlich einige Stellen in der Benutzeroberfläche, an denen wir meiner Meinung nach Ihre Option C bereitstellen sollten - die Elemente in der Reihenfolge anzeigen, in der sie im Dokument erscheinen, aber Optionen zum Sortieren und Neuordnen anbieten (vermutlich per Drag & Drop).
Eine vorübergehende Lösung wäre jedoch, die Pfade und andere Listen zu sortieren, bevor der Inhalt an ReDoc übergeben wird. Das wäre schnell und einfach zu erledigen und würde das spezifische Problem der Apicurio-Vorschaufunktion beheben.
Irgendwelche Gedanken/Ideen dazu, @jsenko ?
Ich bin auch auf diese Probleme gestoßen; Meine Beobachtung dazu ist, dass APICURIO einfach eine neue Definition an die aktuelle YAML anhängt, wenn wir neue Pfade erstellen; oder wenn wir yaml vollständig ersetzen (zum Beispiel für einzelne Pfade, wenn ich etwas auf der Registerkarte „Quelle“ ändere).
Ich bearbeite die Datenbank manuell, um dies zu beheben, nachdem ich YAML selbst geändert habe (dann aktualisiere ich die Spalte), und irgendwie ist alles kaputt gegangen, dass ich das Projekt entfernen und neu starten muss.
Wie @EricWittmann sagte, denke ich, dass es am besten ist, die Pfade und andere Listen zu sortieren, bevor der Inhalt an ReDoc übergeben wird, oder wir könnten eine andere Schaltfläche auf der Registerkarte „Quelle“ neben der Schaltfläche „Format“ verwenden (vielleicht mit der Bezeichnung „Pfade sortieren“). die wir selbst bewältigen können.
Wie bei #394 denke ich, dass die allgemeine Idee hier ist, dass die Apicurio-Benutzeroberfläche der YAML-Reihenfolge für alle Arten von Elementen (Pfade, Felder, wahrscheinlich Datentypen) entsprechen sollte, da diese Reihenfolge manchmal wichtig ist (z. B. zum Generieren von Dokumentation).
Eine einfache Sache, die hier hilfreich wäre, besteht darin, die Schaltfläche Speichern zu aktivieren, wenn Sie die rohe YAML bearbeiten und nur die Reihenfolge der Elemente ändern. Derzeit ist Apicurio etwas zu schlau und blendet den Speichern-Button aus, wenn sich nur die Reihenfolge der Elemente geändert hat.
Ich denke, das Beste ist, dass die Reihenfolge in der Benutzeroberfläche der Quelle entspricht (wie erwähnt) und dass die Benutzer Dinge per Drag & Drop verschieben können. Das ist keine triviale Änderung, aber meiner Meinung nach das Richtige. Gedanken @jsenko ?
Hilfreichster Kommentar
Ich bin auch auf diese Probleme gestoßen; Meine Beobachtung dazu ist, dass APICURIO einfach eine neue Definition an die aktuelle YAML anhängt, wenn wir neue Pfade erstellen; oder wenn wir yaml vollständig ersetzen (zum Beispiel für einzelne Pfade, wenn ich etwas auf der Registerkarte „Quelle“ ändere).
Ich bearbeite die Datenbank manuell, um dies zu beheben, nachdem ich YAML selbst geändert habe (dann aktualisiere ich die Spalte), und irgendwie ist alles kaputt gegangen, dass ich das Projekt entfernen und neu starten muss.
Wie @EricWittmann sagte, denke ich, dass es am besten ist, die Pfade und andere Listen zu sortieren, bevor der Inhalt an ReDoc übergeben wird, oder wir könnten eine andere Schaltfläche auf der Registerkarte „Quelle“ neben der Schaltfläche „Format“ verwenden (vielleicht mit der Bezeichnung „Pfade sortieren“). die wir selbst bewältigen können.