Elixir 使用Maru框架在Post请求中获取主体
我不熟悉长生不老药。 我正在发送一个带有application/json正文的POST请求。我用的是邮递员。当我发送带有POST请求的json正文负载时,我得到一个服务器错误。i、 e:Elixir 使用Maru框架在Post请求中获取主体,elixir,maru,Elixir,Maru,我不熟悉长生不老药。 我正在发送一个带有application/json正文的POST请求。我用的是邮递员。当我发送带有POST请求的json正文负载时,我得到一个服务器错误。i、 e: %Plug.Parsers.ParseError{ exception: %UndefinedFunctionError{ arity: 1, exports: nil, function: :decode!, module: Poison, reason: nil
%Plug.Parsers.ParseError{
exception: %UndefinedFunctionError{
arity: 1,
exports: nil,
function: :decode!,
module: Poison,
reason: nil
},
plug_status: 400
}
下面是请求和请求代码以及处理该请求的路由。我不知道我做错了什么
顺便说一句:当我发送内容类型为text/plain的消息时,请求有效,但我在任何地方都找不到正文
我想要的是在body参数中获取JSON
OST /api/v1/users/abs22/devices/ytuh48753hhkjfo/power HTTP/1.1
Host: localhost:8880
-X-App-Id: Balalalal
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 0eaf390c-37e5-88db-c1c7-e05c7dbfbf01
{
"device": {
"power_on": true
}
}
路由器如下所示:
namespace :devices do
params do
group :device, type: Json |> List do
optional :power_on, type: Boolean
end
end
get do
conn
|> json(
%{
devices: [
%{
uuid: :abcs,
name: :string,
description: :string,
is_online: true,
is_on: false,
has_current: true,
site_id: nil,
user_id: conn.params["user_id"]
},
%{
uuid: :abcf,
name: :string,
description: :string,
is_online: true,
is_on: false,
has_current: true,
site_id: nil,
user_id: conn.params["user_id"]
}
]
}
)
end
post do
conn
|> json(
%{
device: %{
uuid: :abcf,
name: :string,
description: :string,
is_online: true,
is_on: false,
has_current: true,
site_id: nil,
user_id: conn.params["user_id"]
}
}
)
end
route_param :device_id, type: String do
get do
conn
|> json(
%{
device: %{
uuid: params[:device_id],
name: :string,
description: :string,
is_online: true,
is_on: false,
has_current: true,
site_id: nil,
user_id: conn.params["user_id"],
timers: [
%{
uuid: :string,
description: "10 byte representing switch, week, days, time on, time off",
kind: "reccuring"
},
%{
uuid: :string,
description: "10 byte representing switch, week, days, time on, time off",
kind: "countdown"
},
%{
uuid: :string,
description: "10 byte representing switch, week, days, time on, time off",
kind: "pattern"
},
]
}
}
)
end
put do
conn
|> json(
%{
device: %{
uuid: params[:device_id],
name: :change1,
description: :change2,
is_online: true,
is_on: false,
has_current: true,
site_id: nil,
user_id: conn.params["user_id"]
}
}
)
end
delete do
conn
|> json(
%{
device: %{
uuid: params[:device_id],
name: :string,
description: :string,
is_online: true,
is_on: false,
has_current: true,
site_id: nil,
user_id: conn.params["user_id"]
}
}
)
end
post :power do
conn
|> IO.inspect
|> json(
%{
device: %{
uuid: params[:device_id],
name: :string,
description: :string,
is_online: true,
is_on: true,
has_current: true,
site_id: nil,
user_id: conn.params["user_id"]
}
}
)
end
end
end
您的依赖项中有毒药模块吗?解析程序试图解码请求时,似乎找不到毒药模块。您可以检查iex,查看应用程序运行时是否加载了毒药starts@Badu你说得对。我有Jason作为解析器。把它改成Jason解决了这个问题。谢谢