Elixir Plug.Parsers.JSON
问题描述:
我正在用Elixir Plug编写一个小的http服务器,并且在理解它的解析器工作原理时遇到了一些麻烦。我无法弄清楚如何在我的路由器中访问解析器的结果。我现在有Elixir Plug.Parsers.JSON
...
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
,有2个回调:init/1
和call/2
。后者收到Plug.Conn
结构并返回可能修改Plug.Conn
结构。这允许链插头。
%Plug.Conn{assigns}
旨在用于更新对不同插头的呼叫之间的映射。
Plug.Conn
implements的Inspect
代数开箱即用,所以才这样做:
Logger.debug inspect(conn)
的地方,你会看到分析器存储体
(我敢打赌它在assigns
地图的一些关键。)
啊是的,它似乎是在body_params谢谢:) – BrendanM