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