我正在编写 Elixir (1.8) + Plug_Cowboy (2.0.2) + Jason (1.1.2) 服务器。根据我从文档中获得的信息,一旦 Plug 解析器通过,我应该将所有内容都放在body_params
. 问题是conn.body_params
在我的情况下访问返回%Plug.Conn.Unfetched{aspect: :body_params}
. 检查下面的代码:
defmodule Test.Router do
use Plug.Router
require Logger
plug :match
plug Plug.Parsers, parsers: [:json],
pass: ["application/json", "text/json"],
json_decoder: Jason
plug :dispatch
post "/test" do
Logger.debug inspect(conn.body_params)
conn
|> put_resp_content_type("text/plain")
|> send_resp(204, "Got it")
end
end
知道发生了什么吗?
我对此进行了测试:
curl -H "Content-Type: text/json" -d "{one: 1, two: 2}" 127.0.0.1:8080/test
我曾尝试添加:urlencoded
到解析器,或重新排列插件顺序,但无济于事。