【问题标题】:Aqueduct ignores conroller渡槽忽略控制器
【发布时间】:2020-11-23 17:48:51
【问题描述】:

我有两个控制器,一个资源,另一个正常。它们在同一个线程中,并且都必须运行。

我故意在普通控制器中插入一个突然返回以确保它被简单地忽略。

常规控制器:

import 'package:aqueduct/aqueduct.dart';
import 'package:app_server/app_server.dart';

class InputController extends Controller {
  @override
  Future<RequestOrResponse> handle(Request request) async {
    return Response.badRequest();
  }
}

频道:

@override
  Controller get entryPoint {
    final router = Router();
    
    router.route("/auth/[:type]")
      ..link(() => InputController())
      ..link(() => AuthorizationController(context));
    
    return router;

  }

频道跳过InputController,立即进入资源控制器(AuthorizationController)。

【问题讨论】:

    标签: dart aqueduct


    【解决方案1】:

    事实上它并没有跳过InputController(如果你想相信的话,你可以在里面printf :)),但它适用于router.route("/auth/[:type]")返回的对象而不是结果InputController.

    换句话说,你的频道可以写成如下:

    @override
      Controller get entryPoint {
        final router = Router();
        
        var router2 = router.route("/auth/[:type]");
          router2 = router2.link(() => InputController())
          router2 = router2.link(() => AuthorizationController(context));
        
        return router;
    
      }
    

    cascade notation改为频道中的普通链,以解决游览问题:

    @override
      Controller get entryPoint {
        final router = Router();
        
        router.route("/auth/[:type]")
          .link(() => InputController())
          .link(() => AuthorizationController(context));
        
        return router;
    
      }
    

    【讨论】:

    • 天哪。整个问题都在不必要的地方......谢谢,我仍然需要学习这个主题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2021-12-09
    • 2015-04-30
    相关资源
    最近更新 更多