【Elixir】 PhoenixでバックグラウンドでルーティングのURLを取得する方法
【Elixir】 PhoenixでバックグラウンドでルーティングのURLを取得する方法
ElixirのPhoenixフレームワークでWebアプリケーションを開発する際、バックグラウンドでルーティングのURLを取得するケースがあります。
connを使うパターンと使わないパターンについて説明します。
connはPhoenixのコネクション構造体で、リクエストのコンテキストを提供します。
conn を使うパターン
コントローラーなどで行うパターンです。
- ルーターモジュールのエイリアス
alias MyAppWeb.Router.Helpers, as: Routes
- URLの生成
# パスの取得
path = Routes.route_path(conn, :show, id)
# URLの取得
url = Routes.route_url(conn, :show, id)
conn を使わないパターン
こちらはバッチ処理などセッションがない際に有用なパターンです。
- ルーターモジュールのエイリアス
alias MyAppWeb.Router.Helpers, as: Routes
- URLの生成
# パスの取得
path = Routes.route_path(MyAppWeb.Endpoint, :show, id)
# URLの取得
url = Routes.route_url(MyAppWeb.Endpoint, :show, id)
まとめ
Phoenixフレームワークでは、connを使わなくても、簡単にルーティングのURLを生成ができます。