2016年8月9日火曜日

「Phoenix」フレームワークでプラグ(Plug)

Phoenix」フレームワークでプラグ(Plug)です。さあ、わからなくなってきました。こういうものがあると受け入れて、深く考えずに次に進むしかありません。
プラグは、Webアプリケーションの構成モジュールの仕様です。 また、Webサーバの接続アダプタの抽象化層でもあります。 プラグの基本的な考え方は、「接続」の概念を統一することです。 これは、リクエストとレスポンスがミドルウェアに分離されるような、HTTPミドルウェア層のRackなどとは異なります。

プラグには function plugs と module plugs の2種類があります。
/web/router.ex
defmodule HelloPhoenix.Plugs.Locale do
  import Plug.Conn
  @locales ["en", "fr", "de"]

  def init(default), do: default
  def call(%Plug.Conn{params: %{"locale" => loc}} = conn, _default) when loc in @locales do
    assign(conn, :locale, loc)
  end
  def call(conn, default), do: assign(conn, :locale, default)
end

defmodule HelloPhoenix.Router do
  use HelloPhoenix.Web, :router

  pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
    plug HelloPhoenix.Plugs.Locale, "en"
  end

  scope "/", HelloPhoenix do
    pipe_through :browser # Use the default browser stack

    get "/", PageController, :index
  end
end

参考サイト
Plug(Phoenix)
Rails と Rack(Ruby on Rails ガイド)

0 件のコメント:

コメントを投稿