Http DELETE与空体

时间:2017-01-26 23:01:19

标签: http elm

在Elm(0.18)中,我正在调用一个http DELETE端点,如果成功响应200且空体。

在这种情况下(成功)我需要传回一个带有初始id(OnDelete playerId)的消息。但由于身体是空的,我无法从那里解析它。

目前我这样做,但有更优雅的方式来编写expect的{​​{1}}部分:

Http.Request

这反映了我当前的代码:

Http.expectStringResponse (\response -> Ok playerId)

1 个答案:

答案 0 :(得分:5)

Elm v0.19添加了expectWhatever。它的行为略有不同,Result检查错误,但效果类似。

我为“空”200回复​​创建了一个帮助expectUnit

expectUnit : Expect ()
expectUnit =
    Http.expectStringResponse << always <| Ok ()



deleteThing : String -> Request ()
deleteThing path =
    Http.request
        { method = "DELETE"
        , headers = []
        , url = "http://localhost/api"
        , body = Http.jsonBody <| Encode.object [ ( "path", Encode.string path ) ]
        , expect = expectUnit
        , timeout = Nothing
        , withCredentials = False
        }

但对你来说,你能得到的最好的是。

{ ...
, expect = Http.expectStringResponse << always <| Ok playerId
...
}

或者你可以创建一个助手(singleton实际上是pureExpect

alwaysExpect : a -> Expect a
alwaysExpect =
     Http.expectStringResponse << always << Ok

可以像

一样使用
{ ...
, expect = alwaysExpect playerId
...
}