J'essaie de configurer une API HTTP très simple et de base dans Elixir. Je pensais que l'utilisation de Phoenix pour une telle chose est totalement exagérée, alors je voulais le faire simplement en utilisant Plug. Et je peux le faire en créant un routeur de base comme celui-ci:Comment connecter Plug.Router avec la fonction 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
Cependant, je ne peux pas comprendre comment connecter le routeur à une autre fonction plug. Dis, quelque part j'ai cette fonction compatible avec la prise:
defmodule RandomPlug do
import Plug.Conn
def random_plug(conn, opts) do
whatever(conn)
end
end
Comment le connecter au routeur? Je l'ai essayé d'utiliser cette syntaxe du docs:
forward "/", to: RandomPlug.random_plug
et d'autres variations, mais je ne peux pas l'obtenir pour compiler et/ou au travail. Par exemple, la version ci-dessus se plaint de l'absence de fonction random_plug/0. Oui, je peux le faire fonctionner avec un module Plug complet (avec init
et call
), mais je veux comprendre comment le faire fonctionner avec une fonction. Peut-être que cela me permettra de mieux comprendre certaines spécificités d'Elixir, et cela devrait être possible selon les docs.