Apicurio-studio: Die Pfadreihenfolge in der yml-API ist nicht geordnet und stimmt nicht mit dem Pfad in der Benutzeroberfläche überein

Erstellt am 12. März 2019  ·  5Kommentare  ·  Quelle: Apicurio/apicurio-studio

Hallo,

Ich weiß nicht, ob dies ein Fehler oder eine Verbesserung ist, aber hier ist es

Beschreibung des Problems

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:

image

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:

image

image

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

Was kann getan werden

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

  • Sortieren Sie die ausgegebene API immer
    Vorteile: Einfach zu implementieren (glaube ich?)
    Nachteile: Benutzer können ihre eigene Reihenfolge nicht auswählen
  • Fügen Sie eine Option hinzu, um die Pfade in der ausgegebenen API zu sortieren
    Vorteile: Einfach zu implementieren (glaube ich?)
    Nachteile: Der Benutzer kann die Reihenfolge einzelner Pfade nicht ändern
  • Ändern Sie die Benutzeroberfläche so, dass die angezeigten Pfade nicht geordnet sind.
    und fügen Sie eine Schaltfläche hinzu, um alles zu sortieren + Schaltflächen, um einzelne Pfade nach oben und unten zu verschieben
    Vorteile: Würde alles lösen
    Nachteile: Am schwierigsten zu implementieren (glaube ich?)
enhancement

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.

Alle 5 Kommentare

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 ?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen