2

我正在使用 Elixir Plug 编写一个小型 http 服务器,但在理解其解析器的工作原理时遇到了一些麻烦。我不知道如何在我的路由器中访问解析器的结果。我目前有

...
plug Plug.Parsers, parsers: [:json],
                json_decoder: Poison
plug :match
plug :dispatch
forward "/admin" , to: VoucherSite.Admin.AdminRouter
...

在管理路由器中,我想从上面调用的 Parser 访问解析结果

put "/user" do
  ...access result here...
  respond(conn, {:ok, ""})
end

感觉好像我遗漏了一些明显的东西,但我只能访问conn哪个是连接,所以不知道如何从请求中获取解析的正文。

4

1 回答 1

0

Plug是一个behaviour,有 2 个回调:init/1call/2. 后者接收一个Plug.Conn结构并返回可能修改 Plug.Conn的结构。这允许链接插头。

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

Plug.ConnInspect开箱即用地实现代数,所以只需执行以下操作

Logger.debug inspect(conn)

在某个地方,您会看到解析器将主体存储在哪里(我敢打赌它是assigns地图中的一些关键。)

于 2017-04-03T14:44:01.383 回答