I以下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. SPAが正常に動作するには、/*path
キャッチオールが必要です。そのため、SPAを取り外すことはオプションではありません。
更新:これは私のせいだと判明しました。私は一致していたrouter.exに先に定義された別の/*path
ルートを持っていました。私がそれを取り除いて、一番下のものだけを残したら、ルートは正しく一致し始めました。