在 Elm 0.18 中解析 http 响应

Parsing http responses in Elm 0.18

我正在 Elm 0.18 前端解析来自我的服务器 (Phoenix 1.3) 的 http 响应。

响应如下所示:

error: BadStatus { status = { code = 422, message = "Unprocessable Entity" }, headers = Dict.fromList [("cache-control","max-age=0, private, must-revalidate"),("content-type","application/json; charset=utf-8")], url = "http://localhost:4000/api/v1/sessions", body = "{\"error\":\"No user could be found\"}" }

我想将三位数的 HTTP 代码提取为字符串....在本例中为“422”。

在 Elm 中解析它的最佳方法是什么?我正在使用一种非常 hacky 的方法,我想知道什么工具最适用于此。

    errorCode : String -> String
      errorCode =
        error
            |> Debug.log "error"
            |> toString
            |> String.split "code = "
            |> List.drop 1
            |> String.join ""
            |> String.split ","
            |> List.take 1
            |> String.join ""
            |> Debug.log "Error"

您似乎有 elm-lang/http 包中的 Error。你引用的字符串正是 Errors 在控制台/调试器中呈现为字符串的方式,我相信——我不认为有任何解析要做,因此。

换句话说,我认为你想要的功能根本不会在 Strings 上运行:

errorCode : Error -> Maybe String
errorCode err =
    case err of
        BadStatus response ->
            Just response.status.code

        _ ->
            Nothing

(elm 编译器当然应该告诉你你的 String -> String 或我的 Error -> Maybe String 签名是否正确。)