Доступ к результату Elixir Plug.Parsers.JSON
Я пишу небольшой http-сервер с помощью Elixir Plug и испытываю некоторые затруднения с пониманием того, как работает его парсер. Я не могу понять, как получить доступ к результату парсера в моем маршрутизаторе. У меня сейчас
...
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
которая является соединением, поэтому не знаю, как получить проанализированное тело из запроса.
1 ответ
Plug
это behaviour
, имея 2 обратных вызова: init/1
а также call/2
, Последний получает Plug.Conn
структура и возвращает возможно измененный Plug.Conn
структура. Это позволяет подключать штекеры.
%Plug.Conn{assigns}
предназначен для обновления карты между вызовами на разные штекеры.
Plug.Conn
реализует Inspect
алгебра из коробки, так что просто сделайте:
Logger.debug inspect(conn)
где-нибудь, и вы увидите, где анализатор хранит тело (я бы поспорил, что это какой-то ключ в assigns
карта.)