Got it, thanks, Witold.
This version is more direct without the need for an alias.
deletePlayer : Player -> Cmd Msg
deletePlayer player =
restRequest (hostUrl ++ "/players/" ++ (toString player.id))
(playerEncode player)
(Json.Decode.succeed player)
DELETE
|> Http.send (PlayerMsg_ << OnDeletePlayer)
On Tuesday, March 7, 2017 at 5:24:51 PM UTC-8, Witold Szczerba wrote:
>
> Your "decodeAlwaysTrue" is nothing but an alias. You can write
> decodeAlwaysTrue = Json.Decode.succeed
> or just get rid of it.
>
> 07.03.2017 06:45 "Long Nguyen" <[email protected] <javascript:>>
> napisaĆ(a):
>
> I figured out a solution by using a decoder that always succeed.
>
> decodeAlwaysTrue : a -> Json.Decode.Decoder a
> decodeAlwaysTrue value =
> Json.Decode.succeed value
>
> Then in my helper function, I would use the decoder like this
>
> deletePlayer : Player -> Cmd Msg
> deletePlayer player =
> restRequest (hostUrl ++ "/players/" ++ (toString player.id))
> (playerEncode player)
>
> (decodeAlwaysTrue player)
> DELETE
> |> Http.send (PlayerMsg_ << OnDeletePlayer)
>
> Thanks for your help Brian.
>
>
>
> On Monday, March 6, 2017 at 7:46:28 PM UTC-8, Long Nguyen wrote:
>>
>> I'm getting the following error:
>>
>> BadPayload "Expecting an object with a field named `id` but instead got:
>> {}" { status = { code = 200, message = "OK" }, headers = Dict.fromList [(
>> "Cache-Control","no-cache"),("Content-Type","application/json;
>> charset=utf-8"),("Expires","-1"),("Pragma","no-cache")], url = "
>> http://localhost:4000/players/9", body = "{}" }
>>
>> How should I structure my Http.request to expect an empty body?
>>
>> On Sunday, March 5, 2017 at 11:50:42 PM UTC-8, Brian Hicks wrote:
>>>
>>> What error are you getting? It looks like you're asking Elm to decode a
>>> player when you know you're not going to be getting one.
>>>
>>> On Mar 6, 2017, at 12:19 AM, Long Nguyen <[email protected]> wrote:
>>>
>>> Hello,
>>>
>>> I have the following helper functions to trigger the DELETE request of a
>>> resource.
>>>
>>> deletePlayer : Player -> Cmd Msg
>>> deletePlayer player =
>>> restRequest (hostUrl ++ "/players/" ++ (toString player.id))
>>> (playerEncode player)
>>> playerDecoder
>>> DELETE
>>> |> Http.send (PlayerMsg_ << OnDeletePlayer)
>>>
>>> restRequest : String -> JE.Value -> JD.Decoder a -> HTTPMethod ->
>>> Http.Request a
>>> restRequest url encode decoder method =
>>> Http.request
>>> { body = encode |> Http.jsonBody
>>> , expect = Http.expectJson decoder
>>> , headers = []
>>> , method = toString method
>>> , timeout = Nothing
>>> , url = url
>>> , withCredentials = False
>>> }
>>>
>>> And in my Update method I have the following code.
>>>
>>> case msg of
>>> ....
>>> DeletePlayer id ->
>>> let
>>> maybePlayer =
>>> playersModel.players
>>> |> List.filter (\player -> player.id == id)
>>> |> List.head
>>> in
>>> case maybePlayer of
>>> Just player ->
>>> ( { playersModel | idToDelete = player.id }
>>> , API.deletePlayer player )
>>>
>>> Nothing ->
>>> ( playersModel, Cmd.none )
>>>
>>> OnDeletePlayer (Ok deletedPlayer) ->
>>> Debug.log ("Ok")
>>> ( playersModel, Cmd.none)
>>>
>>> OnDeletePlayer (Err error) ->
>>> Debug.log ("Error")
>>> ( playersModel, Cmd.none )
>>>
>>>
>>> The HTTP request got executed, and the resource gets deleted; however,
>>> the problem is that Elm always trigger the "OnDeletePlayer (Err error)"
>>> branch of the Update function. I'm using JSON Server
>>> <https://github.com/typicode/json-server>, and after the request is
>>> executed, the response body is "{}" with 200 as Status Code.
>>>
>>> Please help me in structuring my Http.request so that the
>>> "OnDeletePlayer (Ok deletedPlayer)" branch gets executed upon success.
>>>
>>> Much appreciated!
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Elm Discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "Elm Discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>
>
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.