【问题标题】:How to configure http request with "form" in elm如何在 elm 中使用“表单”配置 http 请求
【发布时间】:2020-08-22 08:16:38
【问题描述】:

我这周刚开始学习榆树,如果问题非常基础,请原谅。

所以,我想将一个关键字(它是我的模型的一部分,如https://elm-lang.org/examples/forms 的表单示例所示)作为“表单”从我的 elm 前端发送到我的后端。我的 cURL HTTP 请求如下所示:

curl -X 'POST' --form 'keyword=key' 0.0.0.0:5000/search

如何将其转换为用 elm 编写的 HTTP 请求,特别是 --form 部分?我阅读了 elm 指南中的 HTTP 部分,但没有提及任何内容。

【问题讨论】:

  • 我认为您需要使用multipartBody构建您的帖子请求正文
  • @5ndG 谢谢,你能解释一下为什么它应该是 multipartBody 而不是 stringBody 吗?我试过 stringBody 但它没有用。
  • 这是因为你的后端需要一个表单,所以 multipartBody 会正确格式化请求以便后端理解它。

标签: http frontend elm


【解决方案1】:

--form对应一个multipart请求,可以使用Http.multipartBody来构造。这相当于您的示例 curl 请求。

Http.post
    { url = "http://0.0.0.0:5000/search"
    , body =
        Http.multipartBody
            [ Http.stringPart "keyword" "key"
            ]
    , expect = Http.expectString GotText
    }

使用multipartBody,您还可以分别使用filePartbytesPart 发布文件和blob,除了此处使用stringPart 完成的简单键值对之外

【讨论】:

  • 非常感谢!!由于我的后端实际上发送了一个 JSON 文件,所以最后一行应该是 expect = Http.expectJson GotJson (Json.Decode.list string) 吗?
  • 没必要,因为你也可以手动解码字符串,但肯定会方便很多,是的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多