-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
路由,它是匹配的。一旦我将其删除,并且只留下底部的一个,路由就开始正确匹配。