ota*_*jor 3 functional-programming http elm
我正在设置一个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
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请求,但后来我得到一个错误,因为响应的成功道具是布尔值而不是字符串.
有什么指针吗?干杯!
你粘贴的代码看起来都不错,这让我觉得问题在于你没有列出的代码.也就是说,Msg
构造函数GetDataResult
应该有一个类型的参数Result Http.Error Bool
.如果签名是相反的,则会收到您收到的编译器错误Result Http.Error String
.