Inviare una richiesta http

Elm:
Inviare una richiesta http

How to:

Segui questo esempio per mandare una richiesta GET in Elm:

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)

getUser : Cmd Msg
getUser =
    Http.send ReceiveUser
        (Http.get
            { url = "https://api.example.com/user/1"
            , decoder = userDecoder
            }
        )

type Msg
    = ReceiveUser (Result Http.Error User)

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        ReceiveUser (Ok user) ->
            ( { model | user = Just user }, Cmd.none )

        ReceiveUser (Err _) ->
            ( { model | error = Just "Failed to fetch user." }, Cmd.none )

Esegui getUser e aspettati un output simile quando ricevi una risposta:

{ id = 1, name = "Mario Rossi" }

Deep Dive

HTTP in Elm è gestito dallo Http package. La storia degli HTTP requests risale al 1991, quando il web nasceva. Oggi, Http.get e Http.post sono ampiamente usati in Elm, insieme a decoders per interpretare le risposte. Alternativamente, usare il tipo Http.request dà più controllo. I programmatori Elm devono gestire gli effetti collaterali, quindi le richieste HTTP sono comandi eseguiti nel update function che restituiscono messaggi definiti dall’utente.

See Also

Per approfondire: