Quickstart Node.js / TypeScript¶
mic-node applique les mêmes frontières MIC à Node.js : contrats exécutables,
routes indépendantes du framework, erreurs de domaine canoniques, injection
explicite et tests du comportement public.
Prérequis¶
- Node.js 24 ou version ultérieure ;
pnpm.
Les quinze paquets @mic-struct sont publiés sur le registre public npm. Leur
installation ne demande ni jeton ni configuration de registre propre à MIC.
Générer et vérifier un service¶
pnpm dlx @mic-struct/create-mic-service ./my-service
cd my-service
pnpm install
pnpm verify
pnpm start
Le projet généré fournit immédiatement :
GET /healthetGET /ready;- le contrat OpenAPI 3.1 sur
GET /openapi.json; POST /api/v1/widgetsetGET /api/v1/widgets;- une CLI opérateur pour l'état de préparation, l'export OpenAPI, le catalogue d'événements et le rejeu ;
- 12 tests du service, dont un test HTTP de bout en bout ;
- une erreur
widgets.already_existsnon transitoire, partagée entre l'exécution et le contrat OpenAPI.
Le serveur écoute sur le port 3000 par défaut. La commande suivante exporte
le contrat sans démarrer de serveur HTTP :
Déclarer une route¶
import { created, route, schema, wrapHttpSuccess } from "@mic-struct/mic-core"
const CreateWidget = schema.object({
name: schema.string({ minLength: 1 }),
})
export const createWidget = route({
method: "POST",
path: "/api/v1/widgets",
name: "widgets.create",
category: "widgets",
body: CreateWidget,
successStatusCode: 201,
handler: async ({ body }) => created(
wrapHttpSuccess({ id: "widget-1", name: body.name }),
),
})
La même route est servie par Node HTTP, Express, Fastify, Hono ou NestJS sans modifier le gestionnaire.
Paquets¶
| Besoin | Paquets |
|---|---|
| Contrats, erreurs, HTTP, authentification, CLI | @mic-struct/mic-core |
| Client inter-service signé | @mic-struct/mic-client |
| Persistance, cache, outbox, files, temps réel, planification | @mic-struct/mic-datastore |
| Adaptateurs HTTP | @mic-struct/mic-node-http, @mic-struct/mic-express, @mic-struct/mic-fastify, @mic-struct/mic-hono, @mic-struct/mic-nest |
| Kafka, NATS et Redis | @mic-struct/mic-kafka, @mic-struct/mic-nats, @mic-struct/mic-redis |
| Observabilité et résilience | @mic-struct/mic-observability, @mic-struct/mic-resilience |
| Autorisation, limitation de débit, OIDC | @mic-struct/mic-platform |
| Générateur | @mic-struct/create-mic-service |
Les 15 paquets déclarent engines.node >=24.0.0. Chaque publication officielle
est déclenchée par un tag protégé, vérifie les archives npm, puis installe les
paquets publiés dans un projet vierge et exécute le service généré.
Consultez le dépôt mic-node pour l'API complète et les décisions d'architecture.