小编Fra*_*bar的帖子

Elm 0.19:使用 elm/http 2.0.0 接收 BadStatus 时如何获取请求正文

elm/http 1.0.0 定义Http.Error

type Error
    = BadUrl String
    | Timeout
    | NetworkError
    | BadStatus (Response String)
    | BadPayload String (Response String)
Run Code Online (Sandbox Code Playgroud)

但2.0.0将其更改为

type Error
    = BadUrl String
    | Timeout
    | NetworkError
    | BadStatus Int
    | BadBody String
Run Code Online (Sandbox Code Playgroud)

接收时BadStatus我无法获取请求的正文,只能获取状态代码。在文档中,埃文提出了一个解决方案,但我不明白如何使其发挥作用。

如果我们定义自己的expectJson类似

expectJson : (Result Http.Error a -> msg) -> D.Decoder a -> Expect msg
expectJson toMsg decoder =
  expectStringResponse toMsg <|
    \response ->
      case response of
        Http.BadStatus_ metadata body ->
          Err (Http.BadStatus metadata.statusCode)
        ... …
Run Code Online (Sandbox Code Playgroud)

http elm

6
推荐指数
1
解决办法
1315
查看次数

Elm:如何定义一个以消息为参数执行请求的函数

在Elm 0.18中,如何定义执行请求的函数,当接收到响应时,该函数将更新函数的消息作为参数?

如下代码:

mypost : String -> String -> msg -> Cmd msg
mypost url csrf mymsg =
    Http.request
        { method = "POST"
        , headers = [ Http.header "X-CSRFToken" csrf ]
        , url = url
        , body = Http.emptyBody
        , expect = Http.expectJson mydecoder
        , timeout = Nothing
        , withCredentials = False
        }
        |> RemoteData.sendRequest
        |> Cmd.map mymsg
Run Code Online (Sandbox Code Playgroud)

无法编译:

函数的参数map导致不匹配。

124 | Cmd.map m ^函数map期望参数为:

a -> msg
Run Code Online (Sandbox Code Playgroud)

但它是:

msg
Run Code Online (Sandbox Code Playgroud)

提示:函数似乎还需要1个参数。

如果味精接受一个参数怎么办?例如:

|> Cmd.map …
Run Code Online (Sandbox Code Playgroud)

elm

5
推荐指数
1
解决办法
504
查看次数

标签 统计

elm ×2

http ×1