Zum Inhalt springen

Schnellstart

Der init-Befehl erstellt eine fertige db.yml und eine yrest.config.yml im aktuellen Verzeichnis:

Terminal-Fenster
npx @yrest/cli init

Drei integrierte Templates sind über --sample verfügbar:

TemplateInhalt
basic(Standard)

users- und posts-Collections — gut für einen ersten Blick

relational

users, posts, comments mit _rel -Verknüpfungen

ecommerce

products, orders, customers mit reichhaltigeren Feldschemata

Terminal-Fenster
npx @yrest/cli init --sample relational # relationales Template
npx @yrest/cli init --sample ecommerce # E-Commerce-Template
npx @yrest/cli init --file api.yml # benutzerdefinierter Dateiname

Du kannst init auch komplett überspringen und die Datei manuell schreiben — das Format ist einfaches YAML:

db.yml
users:
- id: 1
name: Ana
email: ana@test.com
- id: 2
name: Luis
email: luis@test.com
posts:
- id: 1
title: First post
userId: 1

Jeder Schlüssel auf oberster Ebene, der nicht mit _ beginnt, wird zu einer Collection mit vollständigen CRUD-Routen.

Terminal-Fenster
npx @yrest/cli serve db.yml
yrest · http://localhost:3070
Collections (base: /):
CRUD /users
CRUD /posts
Meta:
GET /_about

Der Standardport ist 3070. Er wurde gewählt, um Konflikte mit den gängigsten Entwicklungsports (3000, 3001, 4000, 8080, 8000) zu vermeiden, sodass du yRest neben deinem Frontend-Dev-Server betreiben kannst, ohne etwas konfigurieren zu müssen.

Verfügbare Flags:

FlagStandardBeschreibung
-p, —port <n>3070Port zum Lauschen
-H, —host <host>localhost

Host binden (nutze 0.0.0.0 für LAN-Zugriff)

-b, —base <path>(keiner)

Alle Routen mit Präfix versehen — z. B. —base /api/v1

-w, —watchaus

db.yml bei Änderungen automatisch neu laden

-r, —readonlyausAlle Schreibvorgänge ablehnen (POST/PUT/PATCH/DELETE → 405)
-d, —delay <ms>0Feste Latenz zu jeder Antwort hinzufügen
—pageable [limit]aus

Listen in { data, pagination } einwickeln

—snapshotaus

POST /_snapshot zum Speichern des Live-Zustands bereitstellen

—handlers <file>(keiner)

Pfad zu einer yrest.handlers.js-Datei mit benutzerdefinierter Logik

—id-strategy <s>increment

increment (1, 2, 3…) oder uuid

Optionen können auch in yrest.config.yml gesetzt werden, damit du sie nicht bei jedem Start wiederholen musst. CLI-Flags haben immer Vorrang vor der Konfigurationsdatei.

Jede Collection erhält automatisch die vollständige REST-Oberfläche. Hier sind die häufigsten Operationen für die users-Collection aus dem obigen Beispiel:

Terminal-Fenster
# Alle Benutzer auflisten
curl http://localhost:3070/users
# Einen Benutzer nach ID abrufen
curl http://localhost:3070/users/1
# Nach Feldwert filtern
curl "http://localhost:3070/users?name_like=ana"
# Paginieren
curl "http://localhost:3070/users?_page=1&_limit=10"
# Sortieren
curl "http://localhost:3070/users?_sort=name&_order=asc"
# Einen neuen Benutzer erstellen (ID wird automatisch vergeben)
curl -X POST http://localhost:3070/users \
-H "Content-Type: application/json" \
-d '{"name":"Carlos","email":"carlos@test.com"}'
# Teilweise aktualisieren
curl -X PATCH http://localhost:3070/users/1 \
-H "Content-Type: application/json" \
-d '{"name":"Ana Aktualisiert"}'
# Löschen
curl -X DELETE http://localhost:3070/users/1

Änderungen über POST/PUT/PATCH/DELETE werden in Echtzeit in db.yml gespeichert. Starte den Server neu, um die ursprünglichen Daten wiederherzustellen, oder aktiviere --snapshot und rufe POST /_snapshot auf, um den aktuellen Zustand explizit zu speichern.

Öffne http://localhost:3070/_about in deinem Browser.

Diese eingebaute Seite zeigt alle generierten Endpunkte gruppiert nach Collection, die aktiven Server-Modi, alle in _routes definierten benutzerdefinierten Routen und fertige curl-Beispiele für jede Operation. Sie aktualisiert sich automatisch, wenn der Server neu lädt — nützlich als schnelle Referenz während du dein Frontend baust.