elixir - 如何从连接中获取请求正文?

标签 elixir phoenix-framework

在我的 Controller 的 update(conn, params) Action 中,如何取出 PUT 请求传入的 JSON 主体?

我将这些值视为 params 中的映射,但其中插入了“id”。如果我传递一个“id”,它就会被覆盖。原来的 body 可能在 conn 的某个地方,但我不知道你是怎么找到的。

最佳答案

您可以使用 body_paramsPlug.Conn结构。

例如

#PUT /users/1
{"user": {"name": "lol"}, "id": 7}
  • params["id"]将是“1”
  • body_params["id"]将是 7

  • 希望这对你有用。

    因为你只能read_body/2有一次,访问请求主体会更复杂一些。您将需要绕过 Plug.Parsers在您的 Endpoint对于您的请求并手动阅读正文。

    从插件文档:

    If you need to access the body multiple times, it is your responsibility to store it. Finally keep in mind some plugs like Plug.Parsers may read the body, so the body may be unavailable after accessing such plugs.

    关于elixir - 如何从连接中获取请求正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34165697/

    相关文章:

    elixir - 输出为 ecto 迁移生成的 DDL

    elixir - 在资源路由中添加新路径

    postgresql - Phoenix 和 Postgres 安装 - 不说话

    elixir - 埃克托+ Elixir : How do I query a hashmap field?

    security - Phoenix 应用程序中可能存在 DoS/是否有必要进一步清理用户输入?

    Docker + 旧版本的 Elixir/Phoenix

    elixir - Ecto 中的嵌套预加载

    javascript - 在单个 Phoenix 模板中需要一个 JavaScript 模块

    elixir - 如何检查 Elixir 列表或元组中是否存在某个项目?

    elixir - 带有粗箭头与冒号的 map (Poison - json 解码)