【问题标题】:Route matching with /*path does not work as expected与 /*path 匹配的路由无法按预期工作
【发布时间】:2017-10-15 05:16:34
【问题描述】:

我有以下 router.ex:

scope "/api", MyAppWeb do
  get "/activate", SubscriptionController, :create, as: :activate_account
end

scope "/", MyAppWeb do
  get "/*path", AppController, :index
end

SubscriptionController.create/2:

def create(conn, %{"token" => token}) do
  ...
end

做mix phx.routes 显示:

activate_account_path    GET   /api/activate   MyAppWeb.SubscriptionController :create
app_path                 GET   /*path          MyAppWeb.AppController :index

因此,根据所显示的内容,除了/activate 路由在router.ex 中排在第一位之外,它应该首先匹配。

但是,当我向/api/activate发送GET请求时,它被AppController.index/2处理:

[info] GET /api/activate
[debug] Processing with MyAppWeb.AppController.index/2
Parameters: %{"path" => ["api", "activate"], "token" => "test"}

为什么会这样?

附:我需要 /*path 包罗万象才能让我的 SPA 正常工作,因此不能选择删除它。

更新:这原来是我的错。我之前在 router.ex 中定义了另一个 /*path 路由匹配。一旦我删除它,只留下底部的那个,路由就开始正确匹配了。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    这原来是我的错。我之前在 router.ex 中定义了另一个 /*path 路由匹配。一旦我删除它,只留下底部的那个,路由就开始正确匹配了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-09
      • 2013-11-03
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      相关资源
      最近更新 更多