Scaricare una pagina web

Elm:
Scaricare una pagina web

How to: (Come fare:)

In Elm, usare Http per scaricare una pagina web è diretto. Creiamo una richiesta e gestiamo la risposta.

import Http
import Html exposing (Html, text)
import Json.Decode as Decode

type Msg = GotText String | RequestFailed Http.Error

type alias Model = 
    { content : String
    , error : Maybe String
    }

init : ( Model, Cmd Msg )
init =
    ( { content = "", error = Nothing }
    , fetchPage "https://example.com"
    )

fetchPage : String -> Cmd Msg
fetchPage url =
    Http.get
        { url = url
        , expect = Http.expectString GotText
        }

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        GotText text ->
            ( { model | content = text, error = Nothing }, Cmd.none )

        RequestFailed err ->
            ( { model | error = Just (toString err) }, Cmd.none )

view : Model -> Html Msg
view model =
    case model.error of
        Just err ->
            text ("Request failed: " ++ err)

        Nothing ->
            text model.content

Il codice sopra inizializza una richiesta al caricamento dell’app e visualizza il contenuto scaricato o un errore.

Deep Dive (Approfondimento)

Elm rende il download di pagine web sicuro e gestibile. La versione attuale, 0.19.1, continua a utilizzare Http dalla 0.18, ma con miglioramenti. In alternativa, si potrebbe usare JavaScript, ma perdendo i benefici della tipizzazione forte di Elm. I dettagli sull’implementazione riguardano principalmente la gestione degli errori e degli effetti, affrontando la natura asincrona delle richieste HTTP.

See Also (Vedi anche)