2017-04-03 47 views
0

我正在用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這是連接,所以不知道如何從請求中獲得解析的正文。

回答

0

Plugbehaviour,有2個回調:init/1call/2。後者收到Plug.Conn結構並返回可能修改Plug.Conn結構。這允許插頭。

%Plug.Conn{assigns}旨在用於更新對不同插頭的呼叫之間的映射。

Plug.Conn implementsInspect代數開箱即用,所以才這樣做:

Logger.debug inspect(conn) 

的地方,你會看到分析器存儲體

(我敢打賭它在 assigns地圖的一些關鍵。)
+0

啊是的,它似乎是在body_params謝謝:) – BrendanM