Elixir 的访问结果 Plug.Parsers.JSON

Access result of Elixir Plug.Parsers.JSON

我正在使用 Elixir Plug 编写一个小型 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 is a behaviour, having 2 callbacks: init/1 and call/2. The latter receives a Plug.Conn 结构和 returns 可能修改了 Plug.Conn 结构。这允许 chain 插头。

%Plug.Conn{assigns} 旨在用于更新对不同插件的调用之间的映射。

Plug.Conn implements 开箱即用的 Inspect 代数,所以只需执行:

Logger.debug inspect(conn)

在某个地方,你会看到解析器存储正文的位置(我敢打赌它是 assigns 映射中的某个键。)