YAML & Projektstruktur
YAML & Projektstruktur
Abschnitt betitelt „YAML & Projektstruktur“Projektlayout, YAML-Definitionsdateien und Namenskonventionen.
Verzeichnisstruktur
Abschnitt betitelt „Verzeichnisstruktur“myapp/├── .wippy.yaml # Runtime-Konfiguration├── wippy.lock # Quellverzeichnis-Konfiguration├── .wippy/ # Installierte Module└── src/ # Anwendungsquellcode ├── _index.yaml # Entry-Definitionen ├── api/ │ ├── _index.yaml │ └── *.lua └── workers/ ├── _index.yaml └── *.luaYAML-Definitionsdateien
Abschnitt betitelt „YAML-Definitionsdateien“Dateistruktur
Abschnitt betitelt „Dateistruktur“Jede YAML-Datei mit version und namespace ist gültig:
version: "1.0"namespace: app.api
entries: - name: get_user kind: function.lua meta: comment: Ruft Benutzer nach ID ab source: file://get_user.lua method: handler modules: - sql - json
- name: get_user.endpoint kind: http.endpoint meta: comment: Benutzer-API-Endpunkt method: GET path: /users/{id} func: get_user| Feld | Erforderlich | Beschreibung |
|---|---|---|
version | ja | Schemaversion (aktuell "1.0") |
namespace | ja | Entry-Namespace für diese Datei |
entries | ja | Array von Entry-Definitionen |
Namenskonvention
Abschnitt betitelt „Namenskonvention“Verwenden Sie Punkte (.) zur semantischen Trennung und Unterstriche (_) für Wörter:
# Funktion und ihr Endpunkt- name: get_user # Die Funktion- name: get_user.endpoint # Ihr HTTP-Endpunkt
# Mehrere Endpunkte für dieselbe Funktion- name: list_orders- name: list_orders.endpoint.get- name: list_orders.endpoint.post
# Router- name: api.public # Öffentlicher API-Router- name: api.admin # Admin-API-Routerbasis_name.variante — Punkte trennen semantische Teile, Unterstriche trennen Wörter innerhalb eines Teils.
Namespaces
Abschnitt betitelt „Namespaces“Namespaces sind durch Punkte getrennte Bezeichner:
appapp.apiapp.api.v2app.workersDie vollständige Entry-ID kombiniert Namespace und Name: app.api:get_user
Quellverzeichnisse
Abschnitt betitelt „Quellverzeichnisse“Die wippy.lock-Datei definiert, woher Wippy Definitionen lädt:
directories: modules: .wippy src: ./srcWippy scannt diese Verzeichnisse rekursiv nach YAML-Dateien.
Entry-Definitionen
Abschnitt betitelt „Entry-Definitionen“Jeder Eintrag steht im entries-Array. Eigenschaften befinden sich auf oberster Ebene (kein data:-Wrapper):
entries: - name: hello kind: function.lua meta: comment: Gibt Hello World zurück source: file://hello.lua method: handler modules: - http - json
- name: hello.endpoint kind: http.endpoint meta: comment: Hello-Endpunkt method: GET path: /hello func: helloMetadaten
Abschnitt betitelt „Metadaten“Verwenden Sie meta für benutzerfreundliche Informationen:
- name: payment_handler kind: function.lua meta: title: Zahlungsprozessor comment: Verarbeitet Stripe-Zahlungen source: file://payment.luaKonvention: meta.title und meta.comment werden in Verwaltungsoberflächen ansprechend dargestellt.
Anwendungseinträge
Abschnitt betitelt „Anwendungseinträge“Verwenden Sie registry.entry-Kind für Konfiguration auf Anwendungsebene:
- name: config kind: registry.entry meta: title: Anwendungseinstellungen type: application environment: production features: dark_mode: true beta_access: falseHäufige Entry-Typen
Abschnitt betitelt „Häufige Entry-Typen“| Kind | Zweck |
|---|---|
registry.entry | Allgemeine Daten |
function.lua | Aufrufbare Lua-Funktion |
process.lua | Langlebiger Prozess |
http.service | HTTP-Server |
http.router | Routengruppe |
http.endpoint | HTTP-Handler |
process.host | Prozess-Supervisor |
Siehe Entry-Typen-Anleitung für vollständige Referenz.
Konfigurationsdateien
Abschnitt betitelt „Konfigurationsdateien“.wippy.yaml
Abschnitt betitelt „.wippy.yaml“Runtime-Konfiguration im Projektstamm:
logger: encoding: json
host: worker_count: 16
http: address: :8080Siehe Konfigurationsanleitung für alle Optionen.
wippy.lock
Abschnitt betitelt „wippy.lock“Definiert Quellverzeichnisse:
directories: modules: .wippy src: ./srcEinträge referenzieren
Abschnitt betitelt „Einträge referenzieren“Referenzieren Sie Einträge nach vollständiger ID oder relativem Namen:
# Vollständige ID (namespace-übergreifend)- name: main.router kind: http.router endpoints: - app.api:get_user.endpoint - app.api:list_orders.endpoint
# Gleicher Namespace - nur Name verwenden- name: get_user.endpoint kind: http.endpoint func: get_userBeispielprojekt
Abschnitt betitelt „Beispielprojekt“myapp/├── .wippy.yaml├── wippy.lock└── src/ ├── _index.yaml # namespace: app ├── api/ │ ├── _index.yaml # namespace: app.api │ ├── users.lua │ └── orders.lua ├── lib/ │ ├── _index.yaml # namespace: app.lib │ └── database.lua └── workers/ ├── _index.yaml # namespace: app.workers └── email_sender.luaSiehe auch
Abschnitt betitelt „Siehe auch“- Entry-Typen-Anleitung - Verfügbare Entry-Typen
- Konfigurationsanleitung - Runtime-Optionen
- Benutzerdefinierte Entry-Typen - Handler implementieren (fortgeschritten)