【问题标题】:Aqueduct controller subrouting渡槽控制器子路由
【发布时间】:2018-12-13 21:43:49
【问题描述】:

是否有可能在 Aqueduct 控制器中进行子路由?

router.route("/userApi").link(() => UserController(context));

class UserController extends ResourceController {

@Operation.post("/login")
Future<Response> login(@Bind.body() IdWrap note) async {...}

@Operation.post("/byInnerToken")
Future<Response> login(@Bind.body() IdWrap note) async {...}

post("userApi/login", {"id": "aaa"})
post("userApi/byInnerToken", {"innerToken": "bbb"})

【问题讨论】:

  • 为什么不定义单独的控制器呢? router.route("/userApi/login").link(() => UserLoginController(context)); router.route("/userApi/byInnerToken").link(() => UserByInnerTokenController(context));
  • 这是正确的解决方案。我只是觉得代码行数比必要的多。

标签: aqueduct


【解决方案1】:

通常,是的,通过使用路径变量。

router.route("/userApi/:type").link(() => UserController(context));

class UserController extends ResourceController {
  @Operation.post('type')
  Future<Response> login(@Bind.path('type') String type, @Bind.body() IdWrap note) async {
    switch (type) {
      case "login": return login(note);
      case "byInnerToken": return withToken(note);
      default: return Response.notFound();
    }
  }
}

无法对路径变量的内容进行模式匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2013-09-21
    相关资源
    最近更新 更多