Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 使用Maru框架在Post请求中获取主体_Elixir_Maru - Fatal编程技术网

Elixir 使用Maru框架在Post请求中获取主体

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

我不熟悉长生不老药。 我正在发送一个带有application/json正文的POST请求。我用的是邮递员。当我发送带有POST请求的json正文负载时,我得到一个服务器错误。i、 e:

%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解决了这个问题。谢谢