2017-10-14 43 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路由,它是匹配的。一旦我將其刪除,並且只留下底部的一個,路由就開始正確匹配。