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
映射中的某个键。)
我正在使用 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
映射中的某个键。)