빠른 참조

Koa.js 프레임워크 치트시트

Koa.js 핵심 요약 가이드: 어니언 모델 미들웨어, async/await 캐스케이드, 컨텍스트(ctx), 라우팅 및 통합 에러 핸들링.

· 게시일

Koa는 Express 제작진이 설계한 Node.js용의 표현력 높고 견고한 HTTP 미들웨어 프레임워크입니다.

기본 서버 및 어니언 모델 미들웨어

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

// 로거 미들웨어 (전진 및 후진 캐스케이드)
app.use(async (ctx, next) => {
  const start = Date.now();
  await next(); // 다운스트림 미들웨어로 제어권 전달
  const ms = Date.now() - start;
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});

// 응답 미들웨어
app.use(async (ctx) => {
  ctx.body = { message: 'Hello from Koa!' };
});

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

컨텍스트 (ctx) 참조 가이드

// 요청 객체 검사
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');  // 헤더 조회 헬퍼

// 응답 객체 구성
ctx.status = 200;       // HTTP 상태 코드 설정
ctx.body = 'Hello';     // 문자열, Buffer, Stream 또는 JSON 객체
ctx.set('X-Custom', 'Value'); // 사용자 정의 응답 헤더 설정
ctx.type = 'json';      // Content-Type 단축 표기
ctx.redirect('/login'); // 302 리디렉션 전송

중앙 집중식 에러 핸들링

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);
});

참고 자료

관련 주제