Документація / Контекст запиту

Контекст запиту

Об'єкт ctx: params, query, headers, body, клієнт БД, логер.

Кожен хендлер отримує об’єкт ctx, який містить поверхню запиту, логер і клієнт бази даних. Його значення, що повертається, серіалізується у відповідь.

Об’єкт ctx

Кожен хендлер отримує ctx:

defineRoute({
  handler: async (ctx) => {
    ctx.method;             // 'GET' | 'POST' | ...
    ctx.path;               // '/posts/123'
    ctx.url;                // URL object
    ctx.params;             // { id: '123' }
    ctx.query;              // URLSearchParams
    ctx.headers;            // Request headers
    ctx.ip;                 // string | undefined
    ctx.startedAt;          // number — request start (Date.now()), used for duration
    ctx.requestId;          // string | undefined — set if requestId() middleware ran

    const body = await ctx.body();   // parsed JSON
    const raw  = await ctx.text();   // raw body

    ctx.setStatus(201);
    ctx.setHeader('X-Custom', 'value');

    ctx.log.info('handler running', { id: ctx.params.id });

    const post = await ctx.db?.model('post').findOne(Number(ctx.params.id));

    return { ok: true };    // any value → JSON response
  },
});

Серіалізація значень, що повертаються

Значення, що повертаються, серіалізуються так: