榆树:函数`send`期待Http.Request字符串,但它是Http.Request Bool

ota*_*jor 3 functional-programming http elm

我正在设置一个http对我的服务器上的端点的超级简单调用,该端点返回一个JSON响应 - 一个带有successprop 的对象,它是一个布尔值.这是相关代码:

getData : Model -> Cmd Msg
getData { userId, data } =
    let
        url =
            "/get-data?userId=" ++ userId ++ "&data=" ++ data

        request =
            Http.get url decodeGetData

    in
        Http.send GetDataResult request


decodeGetData : Decode.Decoder Bool
decodeGetData =
  Decode.at [ "success" ] Decode.bool
Run Code Online (Sandbox Code Playgroud)

我从编译器收到以下错误:

Http.send GetDataResult request
                        ^^^^^^^
Function `send` is expecting the 2nd argument to be:
    Http.Request String
But it is:
    Http.Request Bool
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?如何设置Http.send以期望Bool而不是字符串?我知道我的请求的基本设置是正确的,因为我的代码编译,如果我将decodeGetData函数更改为:

decodeGetData : Decode.Decoder String
decodeGetData =
  Decode.at [ "success" ] Decode.string
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以成功地发出http请求,但后来我得到一个错误,因为响应的成功道具是布尔值而不是字符串.

有什么指针吗?干杯!

Cha*_*ert 6

你粘贴的代码看起来都不错,这让我觉得问题在于你没有列出的代码.也就是说,Msg构造函数GetDataResult应该有一个类型的参数Result Http.Error Bool.如果签名是相反的,则会收到您收到的编译器错误Result Http.Error String.