gpt4 book ai didi

榆树 : Decode Http. 错误

转载 作者:行者123 更新时间:2023-12-04 22:49:56 27 4
gpt4 key购买 nike

我想知道如何解码 elm 中的 Http.Error 并将其数据存储在我的模型中。

我知道错误响应将返回这个结构。

{
error: "Some error message",
ok: false
}

这是我的模型和我的 Http 请求

type alias Model =
{ url = String
, result : String
, errorMessage : String
, error : Bool
}

model : Model
model =
{ url = ""
, result = ""
, errorMessage = ""
, error = False
}

-- make the request

makeRequest : String -> Cmd Msg
makeRequest url =
Task.perform FetchFail FetchSucceed (Http.get decodeTitle url)

-- decode the success response

decodeTitle : Json.Decoder String
decodeTitle =
Json.at ["title"] Json.string

-- decode the error

decodeError =
Json.object2 User
("error" := Json.string)
("ok" := Json.bool)

我希望我可以像这样在更新的 FetchFail 中处理这个问题。

type Msg
= FetchTitle
| FetchSucceed String
| FetchFail Http.Error


update : Msg -> Model -> (Model, Cmd Msg)
update action model =
case action of
...

FetchFail err ->
let
error =
decodeError error
in
({ model | ok = error.ok, errorMessage = error.error}, Cmd.none)

感谢任何帮助。

最佳答案

榆树 0.17:

Http.Error 类型是一个联合类型,可以保存响应代码(如果有的话)。

type Error = Timeout | NetworkError | UnexpectedPayload String | BadResponse Int String

您可以大小写 err 变量来访问它。

FetchFail err ->
case err of
BadResponse code error ->
-- handle error message
_ ->
-- other error

http://package.elm-lang.org/packages/evancz/elm-http/3.0.1/Http#Error


使用 elm 0.18 并过渡到 elm-lang/http Error 类型已修改:

type Error
= BadUrl String
| Timeout
| NetworkError
| BadStatus (Response String)
| BadPayload String (Response String)

关于榆树 : Decode Http. 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37739771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com