我正在为我的服务器上的端点设置一个超级简单的http
调用,该端点返回一个JSON响应 - 一个带有success
prop的对象,它是一个布尔值。以下是相关代码:
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
我从编译器中收到以下错误:
Http.send GetDataResult request
^^^^^^^
Function `send` is expecting the 2nd argument to be:
Http.Request String
But it is:
Http.Request Bool
这里出了什么问题?如何设置Http.send以期望Bool而不是字符串?我知道我的请求的基本设置是正确的,因为如果我将decodeGetData
函数更改为:
decodeGetData : Decode.Decoder String
decodeGetData =
Decode.at [ "success" ] Decode.string
在这种情况下,我可以成功发出http请求,但后来我收到错误,因为响应的成功道具是布尔值而不是字符串。
任何指针?干杯!
答案 0 :(得分:6)
你粘贴的代码看起来都不错,这让我觉得问题在于你没有列出的代码。也就是说,Msg
构造函数GetDataResult
应该只有一个Result Http.Error Bool
类型的参数。如果签名是Result Http.Error String
,则会收到编译错误。