我有以下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"}
为什么这样做?
P.S。我需要/*path
全能,以便我的SPA正常工作,因此删除它不是一种选择。
更新:结果证明这是我的错。我之前在router.ex中定义了另一个匹配的/*path
路由。删除后,只留下底部的路径,路线开始正确匹配。
答案 0 :(得分:0)
原来这是我的错。我之前在router.ex中定义了另一个匹配的/*path
路由。删除后,只留下底部的路径,路线开始正确匹配。