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