2017-10-14 40 views
-1

我有以下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 

因此,根据显示的内容,除了路线到达冷杉的事实st在router.ex,应该先匹配。

然而,当我发出GET请求/api/activate,它是由AppController.index/2处理:

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

为什么表现如此?

P.S.我需要/*path全部为我的SPA正常工作,所以删除它不是一个选项。

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

回答

0

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