Copy & Paste Engineer

【Elixir】 PhoenixでバックグラウンドでルーティングのURLを取得する方法

【Elixir】 PhoenixでバックグラウンドでルーティングのURLを取得する方法

ElixirのPhoenixフレームワークでWebアプリケーションを開発する際、バックグラウンドでルーティングのURLを取得するケースがあります。 connを使うパターンと使わないパターンについて説明します。

conn を使うパターン

コントローラーなどで行うパターンです。

  1. ルーターモジュールのエイリアス
alias MyAppWeb.Router.Helpers, as: Routes
  1. URLの生成
# パスの取得
path = Routes.route_path(conn, :show, id)

# URLの取得
url = Routes.route_url(conn, :show, id)

conn を使わないパターン

こちらはバッチ処理などセッションがない際に有用なパターンです。

  1. ルーターモジュールのエイリアス
alias MyAppWeb.Router.Helpers, as: Routes
  1. URLの生成
# パスの取得
path = Routes.route_path(MyAppWeb.Endpoint, :show, id)

# URLの取得
url = Routes.route_url(MyAppWeb.Endpoint, :show, id)

まとめ

Phoenixフレームワークでは、connを使わなくても、簡単にルーティングのURLを生成ができます。