next를 호출하지 않으니 첫 번째 미들웨어까지만 실행하고 그 아래에 있는 미들웨어는 모두 무시되었습니다. 이런 속성을 사용하여 조건부로 다음 미들웨어 처리를 무시하게 만들 수 있는데, 한번 해 볼까요? 다음 코드에서는 요청 경로에 authorized=1이라는 쿼리 파라미터가 포함되어 있으면 이후 미들웨어를 처리해 주고, 그렇지 않으면 이후 미들웨어를 처리하지 않습니다.

    index.js

    const Koa = require('koa');
    
    const app = new Koa();
    
    app.use((ctx, next) => {
      console.log(ctx.url);
      console.log(1);
      if (ctx.query.authorized != = '1') {
        ctx.status = 401; // Unauthorized
        return;
      }
      next();
    });
    
    app.use((ctx, next) => {
      console.log(2);
      next();
    });
    
    app.use(ctx => {
      ctx.body = 'hello world';
    });
    
    app.listen(4000, () => {
      console.log('Listening to port 4000');
    });

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.