Zum Inhalt springen
duxt

Die Sektion deklarieren

Der Sektionstyp `openapi` — wo das Dokument liegt, und was daraus wird.

Eine Referenz ist eine generierte Sektion: Eine Quelle nennt ein Artefakt und den Typ, der es liest, und die Seiten folgen daraus.

export default defineAppConfig({
  duxt: {
    sources: [
      {
        path: 'docs',
        generated: [
          {
            type: 'openapi',
            path: 'openapi.yaml',
            label: 'API'
          }
        ]
      }
    ]
  }
})

Die Felder, die eine Deklaration nimmt, sind für jeden Typ dieselben und stehen in Quellen. openapi nennt keine eigene Option; was es beantwortet, steht unten.

Was daraus entsteht

/api                      die Übersicht, aus `info`
/api/<tag>                eine Seite pro Tag
/api/<tag>/<operation>    eine Seite pro Operation, mit dem Client

Eine Operation ohne Tag landet in einer Standardgruppe, 3.1-Webhooks in einer eigenen — ein Webhook ist dasselbe Objekt unter einem Namen statt unter einer URL, wird also über dieselbe Seite gerendert und sagt, was er ist.

Versionierung

Pro Version. Eine API-Beschreibung gehört zu dem Release, das sie beschreibt: v1 und v2 haben verschiedene Endpoints, und einem Leser auf v1, der fragt was ein Feld bedeutet, darf nicht die Antwort von v2 gezeigt werden. Jede Versions-Collection trägt das Dokument an ihrem eigenen Ref, und der Versionsumschalter arbeitet auf der Referenz genau wie auf der Prosa.

Das ist das Gegenteil dessen, was der Typ changelog tut, und der Grund, warum Versionierung eine Politik des Typs ist und keine Regel des Layers.

Lokalisierung

Pro Locale, wo eine Locale ein eigenes Dokument mitbringt. Eine Beschreibung ist genauso geschriebene Prosa wie Struktur — Zusammenfassungen, Feldbeschreibungen, Bedeutungen von Antworten — eine übersetzte ist also ein echtes Artefakt und nicht dieselbe Datei mit anderem Etikett.

{
  type: 'openapi',
  path: 'openapi.yaml',
  label: 'API',
  locales: { de: 'openapi.de.yaml' }
}

Eine Locale, die in der Map fehlt, baut keine Collection, und die bestehende Fallback-Kette liefert ihr die Referenz der Standardsprache, mit dem Übersetzungsbanner als Hinweis — siehe Lokalisierung. Übersetzt bleiben in jedem Fall die Labels des Layers selbst — die Tabellenköpfe, „Request", „Response", die Statusnamen — denn die gehören zum Theme und nicht zum Dokument.

Wenn das Dokument nicht gelesen werden kann

Der Build schlägt fehl und sagt, welche Sektion und warum. Das ist Absicht: Eine Referenz, die still zu einer leeren Sektion geworden ist, ist eine Referenz, deren Verschwinden niemand bemerkt.

War diese Seite hilfreich?