gpt4 book ai didi

Elm StartApp 解码 http 请求

转载 作者:行者123 更新时间:2023-12-01 12:29:15 26 4
gpt4 key购买 nike

我正在尝试将 http 请求解码为 pokéapi在 Elm 中,使用 StartApp 作为基础。虽然我遇到错误,但我真的不知道如何解决:

The right argument of (|>) is causing a type mismatch.

76│ Http.getString testUrl
77│ |> Task.map parseMon
78│> |> Task.map OnPokemonLoaded

(|>) is expecting the right argument to be a:

Task Http.Error (Result String Pokemon) -> a

But the right argument is:

Task Http.Error (Result Http.Error Pokemon) -> Task Http.Error Action

它正在谈论的代码是:

-- Fetching test mon
testUrl : String
testUrl = "http://pokeapi.co/api/v2/pokemon/1/"


fetchTest : Effects.Effects Action
fetchTest =
Http.getString testUrl
|> Task.map parseMon
|> Task.map OnPokemonLoaded --line 78
|> Effects.task

parseMon : String -> Result String Pokemon.Pokemon
parseMon json = Json.Decode.decodeString Pokemon.decoder json

OnPokemonLoaded 是我的操作之一:OnPokemonLoaded (Result Http.Error Pokemon)Pokemon.decoder 是一个简单的 json 解码器:decoder : Decoder Pokemon.

我对 Elm 还是个新手,只是尝试了 StartApp 和 Effects。该错误似乎很好地解释了问题,但我仍然对它应该如何工作感到有些迷茫。

那么,我应该如何正确请求和解码 json?

最佳答案

Http.getStringparseMon 的使用是不必要的。相反,您可以使用 Http.get 并传递您的 Json 解码器,然后将其映射到 Result 以获得您想要的功能:

fetchTest : Effects.Effects Action
fetchTest =
Http.get Pokemon.decoder testUrl
|> Task.toResult
|> Task.map OnPokemonLoaded
|> Effects.task

关于Elm StartApp 解码 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35937972/

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