我用ILIXIR插件编写了一个小型HTTP服务器,并且很难理解它的解析器是如何工作的。我不知道如何在路由器中访问解析器的结果。我现在有
...
plug Plug.Parsers, parsers: [:json],
json_decoder: Poison
plug :match
plug :dispatch
forward "/admin" , to: VoucherSite.Admin.AdminRouter
...
在管理路由器中,我想访问上面调用的解析器的解析结果
put "/user" do
...access result here...
respond(conn, {:ok, ""})
end
感觉好像我遗漏了一些显而易见的东西,但我所能访问的只是
conn
这是一个连接,所以不知道如何从请求中获取解析的主体。 最佳答案
Plug
是一个behaviour
,有两个回调:init/1
和call/2
。后者接收Plug.Conn
结构并返回可能已修改的Plug.Conn
结构。这样就可以链式连接插头。%Plug.Conn{assigns}
用于更新对不同插头的调用之间的映射。Plug.Conn
implements开箱即用的代数,所以只要:
Logger.debug inspect(conn)
在某个地方,您将看到解析器将主体存储在哪里(我敢打赌它是
Inspect
映射中的某个键)。关于json - Elixir Plug.Parsers.JSON的访问结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43186453/