私はElixirで非常に簡単な基本的なHTTP APIを設定しようとしています。私はPhoenixを使ってこのようなことをするのは残念だと思っていたので、プラグを使って簡単にやりたいと思っていました。そして、私はこのような基本的なルータを設定することによってそれを行うことができます。Plug.RouterとPlug関数の接続方法
defmodule Example.Router do
use Plug.Router
plug Plug.Logger
plug :match
plug :dispatch
get "/" do
data = do_something_with_conn(conn)
send_resp(conn, 200, Poison.encode!(data))
end
match _, do: send_resp(conn, 404, "Not Found")
end
しかし、私は別のプラグイン関数にこのルータを接続する方法を見つけ出すことはできません。こういったプラグ対応機能があるとします。
defmodule RandomPlug do
import Plug.Conn
def random_plug(conn, opts) do
whatever(conn)
end
end
ルータに接続するにはどうすればいいですか?
forward "/", to: RandomPlug.random_plug
そして、他のバリエーションを、私はそれがコンパイルおよび/または動作させることはできません:私はdocsからこの構文を使用してみました。例えば、上記のバージョンでは、random_plug/0関数が存在しないという文句があります。
はい、プラグモジュール全体(init
とcall
)で動作するようになっていますが、機能で動作させる方法を理解したいと思います。おそらくそれは私にいくつかのエリクシルの詳細をより良く理解させてくれるでしょう。