【问题标题】:Creating a middleware controller to handle all requests to Aqueduct in Dart在 Dart 中创建一个中间件控制器来处理对 Aqueduct 的所有请求
【发布时间】:2020-03-28 04:40:18
【问题描述】:

我想制作一个记录器,它将从每个请求记录到数据库的某些信息。我知道如何制作一个控制器,我可以像这样将它链接到每条路线:

  @override
  Controller get entryPoint {
    final router = Router();

    router
        .route('/register')
        .link(() => LogController(context))
        .link(() => RegisterController(context, authServer));

    router
        .route('/auth/token')
        .link(() => LogController(context))
        .link(() => AuthController(authServer));

    router
        .route('/logout')
        .link(() => LogController(context))
        .link(() => Authorizer.bearer(authServer))
        .link(() => LogoutController(context));

    router
        .route('/words/[:id]')
        .link(() => LogController(context))
        .link(() => Authorizer.bearer(authServer))
        .link(() => WordsController(context));

    return router;
  }

如您所见,LogController 在每条路线上都重复出现。

我宁愿只匹配来自单个位置的任何路由,记录数据,然后让其他控制器正常处理事情。这可能吗?

【问题讨论】:

    标签: logging dart routes middleware aqueduct


    【解决方案1】:

    当然,返回一个链接到路由器的 LogController 作为您的入口点:

    @override
    Controller get entryPoint {
      final router = Router();
    
      /* configure Router as you are today */
    
      // Notice the cascade operator... LogController instance is returned
      return LogController(context)..link(() => router);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      相关资源
      最近更新 更多