在Elm(0.18)中,我正在调用一个http DELETE端点,如果成功响应200且空体。
在这种情况下(成功)我需要传回一个带有初始id(OnDelete playerId
)的消息。但由于身体是空的,我无法从那里解析它。
目前我这样做,但有更优雅的方式来编写expect
的{{1}}部分:
Http.Request
这反映了我当前的代码:
Http.expectStringResponse (\response -> Ok playerId)
答案 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
实际上是pure
或Expect
alwaysExpect : a -> Expect a
alwaysExpect =
Http.expectStringResponse << always << Ok
可以像
一样使用{ ...
, expect = alwaysExpect playerId
...
}