Elm:
Envoi d'une requête HTTP
How to: (Comment faire :)
import Http
import Json.Decode as Decode
type alias User =
{ id : Int
, name : String
}
userDecoder : Decode.Decoder User
userDecoder =
Decode.map2 User
(Decode.field "id" Decode.int)
(Decode.field "name" Decode.string)
fetchUser : Int -> Cmd Msg
fetchUser userId =
Http.get
{ url = "https://api.example.com/users/" ++ String.fromInt(userId)
, decoder = userDecoder
}
|> Http.send UserFetched
type Msg
= UserFetched (Result Http.Error User)
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
UserFetched (Ok user) ->
({ model | user = Just user }, Cmd.none)
UserFetched (Err _) ->
(model, Cmd.none)
Deep Dive (Plongée en profondeur)
Historiquement, Elm a rendu les requêtes HTTP plus sûres en utilisant The Elm Architecture, qui gère les effets de bord de façon prévisible. Côté alternatives, on pourrait regarder vers des packages comme elm-http-builder
pour une plus grande flexibilité. En coulisses, Elm utilise des commandes pour déclencher des requêtes HTTP, évitant ainsi les effets de bord aléatoires et garantissant un flux de données unidirectionnel.
See Also (Voir aussi)
- Documentation officielle sur HTTP en Elm : Elm HTTP
- JSON Decoder : Elm JSON Decode Pipeline
- Handling HTTP in Elm : Elm Guide - HTTP