Référence rapide

Aide-mémoire Koa.js

Guide de référence rapide pour Koa.js : modèle d'oignon des middlewares, cascade async/await, contexte ctx, routage et gestion centralisée des erreurs.

· Publié le

Koa est un framework de middleware HTTP expressif et robuste pour Node.js conçu par les créateurs d'Express.

Serveur de base et modèle en oignon (Onion Middleware)

const Koa = require('koa');
const app = new Koa();

// Middleware de journalisation (cascade aller et retour)
app.use(async (ctx, next) => {
  const start = Date.now();
  await next(); // Passe le contrôle au middleware suivant
  const ms = Date.now() - start;
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});

// Middleware de réponse
app.use(async (ctx) => {
  ctx.body = { message: 'Hello from Koa!' };
});

app.listen(3000, () => console.log('Server running on http://localhost:3000'));

Référence du contexte (ctx)

// Inspection de la requête
ctx.method;             // "GET", "POST", etc.
ctx.url;                // Full URL path
ctx.query;              // Parsed query string object
ctx.headers;            // Request headers object
ctx.get('User-Agent');  // Helper pour lire les en-têtes

// Construction de la réponse
ctx.status = 200;       // Définir le code d'état HTTP
ctx.body = 'Hello';     // String, Buffer, Stream ou objet JSON
ctx.set('X-Custom', 'Value'); // Définir un en-tête de réponse
ctx.type = 'json';      // Raccourci pour Content-Type
ctx.redirect('/login'); // Envoyer une redirection 302

Gestion centralisée des erreurs

app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    ctx.status = err.status || 500;
    ctx.body = { error: err.message };
    ctx.app.emit('error', err, ctx);
  }
});

app.on('error', (err, ctx) => {
  console.error('Server error:', err);
});

Références

Sujets associés