Ree*_*Law 3 elixir phoenix-framework
我已经解决了这个问题,以便从控制器中的POST获取原始主体,但是仅当编码设置为时,主体才会显示application/x-www-form-urlencoded。当我进行测试时,curl我可以读取POST正文,但是当编码设置为时,正文显示为空text/xml。在我的router.ex我有:
pipeline :api do
plug :accepts, ["xml"]
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有:
def parse(conn, params) do
xml = conn.private[:raw_body]
Logger.debug(xml)
text conn, xml
end
Run Code Online (Sandbox Code Playgroud)
在endpoint.ex:
def copy_req_body(conn, _) do
Plug.Conn.put_private(conn, :copy_raw_body, true)
end
plug :copy_req_body
Run Code Online (Sandbox Code Playgroud)
我是Phoenix和Elixir的新手,所以不确定如何调试它。为什么HTTP请求的编码会影响原始数据的读取?我的应用程序需要接受text/xml并以字符串形式读取请求正文。
很简单的方法。不确定是否“错误”。
defmodule YourApp.YourController do
use YourApp.Web, :controller
def receive_obm(conn, params) do
{:ok, body, _conn} = Plug.Conn.read_body(conn)
IO.inspect(body)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3005 次 |
| 最近记录: |