Aller au contenu

Démarrage rapide

La commande init génère un db.yml prêt à l’emploi et un yrest.config.yml dans le répertoire courant :

Fenêtre de terminal
npx @yrest/cli init

Trois templates intégrés sont disponibles via --sample :

TemplateContenu
basic(par défaut)

Collections users et posts — idéal pour un premier aperçu

relational

users, posts, comments avec des liens _rel entre eux

ecommerce

products, orders, customers avec des schémas de champs plus riches

Fenêtre de terminal
npx @yrest/cli init --sample relational # template relationnel
npx @yrest/cli init --sample ecommerce # template e-commerce
npx @yrest/cli init --file api.yml # nom de fichier personnalisé

Tu peux aussi ignorer init et écrire le fichier manuellement — le format est du YAML simple :

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

Toute clé de premier niveau qui ne commence pas par _ devient une collection avec des routes CRUD complètes.

Fenêtre de terminal
npx @yrest/cli serve db.yml
yrest · http://localhost:3070
Collections (base: /):
CRUD /users
CRUD /posts
Meta:
GET /_about

Le port par défaut est 3070. Il a été choisi pour éviter les conflits avec les ports de développement les plus courants (3000, 3001, 4000, 8080, 8000), afin que tu puisses exécuter yRest à côté de ton serveur de développement frontend sans toucher à aucune configuration.

Options disponibles :

FlagPar défautDescription
-p, —port <n>3070Port d’écoute
-H, —host <host>localhost

Hôte à lier (utilise 0.0.0.0 pour exposer sur le réseau)

-b, —base <path>(aucun)

Préfixe toutes les routes — ex. —base /api/v1

-w, —watchoff

Recharge db.yml automatiquement lors des modifications

-r, —readonlyoffRejette toutes les écritures (POST/PUT/PATCH/DELETE → 405)
-d, —delay <ms>0Ajoute une latence fixe à chaque réponse
—pageable [limit]off

Enveloppe les listes dans { data, pagination }

—snapshotoff

Expose POST /_snapshot pour sauvegarder l’état en direct

—handlers <file>(aucun)

Chemin vers un fichier yrest.handlers.js avec une logique personnalisée

—id-strategy <s>increment

increment (1, 2, 3…) ou uuid

Les options peuvent aussi être définies dans yrest.config.yml pour ne pas avoir à les répéter à chaque démarrage. Les flags CLI ont toujours la priorité sur le fichier de configuration.

Chaque collection obtient automatiquement la surface REST complète. Voici les opérations les plus courantes sur la collection users de l’exemple ci-dessus :

Fenêtre de terminal
# Lister tous les utilisateurs
curl http://localhost:3070/users
# Obtenir un utilisateur par son id
curl http://localhost:3070/users/1
# Filtrer par valeur de champ
curl "http://localhost:3070/users?name_like=ana"
# Paginer
curl "http://localhost:3070/users?_page=1&_limit=10"
# Trier
curl "http://localhost:3070/users?_sort=name&_order=asc"
# Créer un nouvel utilisateur (l'id est attribué automatiquement)
curl -X POST http://localhost:3070/users \
-H "Content-Type: application/json" \
-d '{"name":"Carlos","email":"carlos@test.com"}'
# Mise à jour partielle
curl -X PATCH http://localhost:3070/users/1 \
-H "Content-Type: application/json" \
-d '{"name":"Ana Mise à jour"}'
# Supprimer
curl -X DELETE http://localhost:3070/users/1

Les modifications effectuées via POST/PUT/PATCH/DELETE sont persistées dans db.yml en temps réel. Redémarre le serveur pour revenir aux données d’origine, ou active --snapshot et appelle POST /_snapshot pour sauvegarder l’état actuel explicitement.

Ouvre http://localhost:3070/_about dans ton navigateur.

Cette page intégrée affiche tous les endpoints générés regroupés par collection, les modes serveur actifs, les routes personnalisées définies dans _routes et des exemples curl prêts à l’emploi pour chaque opération. Elle se met à jour automatiquement lors du rechargement du serveur — utile comme référence rapide pendant que tu construis ton frontend.